,同時通過對功能封裝在Boost庫的教程之一(http://www.boost.org/doc/libs/1_55_0/doc/html/function/tutorial.html)去我碰到下面的代碼來:定義運算符()函數
1 boost::function<float (int x, int y)> f;
2
3 struct int_div {
4 float operator() (int x, int y) const { return ((float)x)/y; }
5 };
6
7
8 int main()
9 {
10 f = int_div();
11 cout << f(5, 3) << endl;
12 return 0;
13 }
我想繞到我的頭關於在結構中定義函數(operator()),然後將結構(使用())分配給函數包裝器f。有人可以幫助我瞭解發生了什麼,至於概念,在第3-5行和第10行。
謝謝, 艾哈邁德。
這是一個仿函數。 'boost :: function'包含一個可調用的對象,並給它一個可以「調用」的類的實例。 – chris
首先要認識到的是,在C++中,結構和類之間的唯一區別是成員的默認可見性:對於結構而言它是公共的,對於類是私有的。所以你真的在這裏定義一個非常公開的課程。 –