c++ 重载函数调用运算符

重载函数调用运算符:

如果类重载了函数调用运算符,则可以像使用函数一样操作类对象。因为这样的类同时也可以存储状态,所以比普通函数更加灵活

 

示例如下:

#include "stdafx.h"
#include "iostream"

using namespace std;

struct NullType
{
};

template <typename T1, typename T2 = NullType>
class Test
{
public:
	Test(T1 a1):a(a1){cout << "Template class" << endl; }
	Test(T1 a1, T2 b1):a(a1), b(b1){ cout << "Template class" << endl; }
	void operator()(){ cout << "Function call operator(No param)" << endl;}
	void operator()(int t){ cout << "Function call operator(has param)" << endl;}

private:
	T1 a;
	T2 b;
};




int main(int argc, char* argv[])
{
	Test<int> obj(5);
	obj();
	obj(6);

	system("pause");

	return 0;
}

  结果:

 

 obj()、obj(6)就是模板类对象obj做函数调用的例子,分别为调用有参数和无参数的函数调用运算符。

posted on 2022-04-09 15:34  wu.g.q  阅读(86)  评论(0编辑  收藏  举报

导航