【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的成员变量的对象。
