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做函数调用的例子,分别为调用有参数和无参数的函数调用运算符。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!