【c++】函数对象 & 强制转换函数
函数对象
函数对象是对于()的重载,由于其调用像调用函数一样,也被称为仿函数。
class A { public: A(int _a) :a(_a) { } int operator()(int x, int y) { return x + y; } protected: float a; int main() { A a(9.9); // 两种调用方式 cout << a.operator()(1, 2) << endl; cout << a(1, 2) << endl; return 0; } };
运行结果
在本例中,创建了对象a,让其调用函数对象,进行1+2的运算,得出结果3。
强制转换函数
就是将之前的、单一的、只能对内置类型进行强制转换的操作赋予类。 具体操作是将类型进行运算符重载。
class A { public: A(int _a) :a(_a) { } operator int() { return int(a); } protected: float a; }; int main() { A a(); // 两种调用方式 cout << a.operator()(1, 2) << endl; cout << a(1, 2) << endl; return 0; }
运行结果
在本例中,创建了一个a对象,它是一个有a=9.9的成员变量的对象,经过强转后变为一个有a=9的成员变量的对象。