快捷搜索: 王者荣耀 脱发

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

经验分享 程序员 微信小程序 职场和发展