函數調用運算符()可以被重用于類的對象。當重載()時,沒有創造一個新的調用函數的方式,相反地,這是創建一個可以傳遞任意數目參數的運算符函數。
/*** bracke.cpp ***/ #include<iostream> using namespace std;class Distance {private:int feet;int inches;public:Distance(){feet = 0;inches = 0;}Distance(int f,int i){feet = f;inches = i;}void displayDistance(){cout << "F: " << feet << " I: " << inches << endl; }Distance operator()(int a,int b,int c ){Distance D;D.feet = a + b + 10;D.inches = b + c + 100;return D;}};int main() {Distance D1(11,10), D2;cout << "First Distance : ";D1.displayDistance();cout << "Second Distance : ";D2 = D1(10,10,10);D2.displayDistance();return 0; }
運行結果:
exbot@ubuntu:~/wangqinghe/C++/20190809$ ./bracket
First Distance : F: 11 I: 10
Second Distance : F: 30 I: 120