重载小括号(),可以实现重载类型转换运算符和重载函数调用运算符。
这两种语法略有不同,具体看代码:
#include <iostream> using namespace std; class S { public: S(int i) :m_i(i) { } //int类型转换 operator int() const noexcept { cout << "operator int()" << endl; return (int)m_i; } //重载"()"操作符,"()"内无参数 void operator() () { cout << "operator()()" << endl; } //重载"()","()"内有一个参数int x void operator() (int x) { cout << "operator()(int)" << endl; } private: double m_i; }; int main() { S s(1.234); s();//operator()() s(1);//operator()(int) auto x = double(s);//operator int() cout << x << endl;//1 return 0; }