vth*_*lhu 2 c++ operator-overloading
我是一个中级C++用户,我遇到了以下情况.下面显示的类定义使用g ++编译器编译得很好.但我无法确定整个语法的含义.
我的猜测是该函数operator int()返回一个int类型.
此外,我无法弄清楚如何使用重载operator ()的main()
class A
{
public:
A(int n) { _num = n; } //constructor
operator int();
private:
int _num;
};
A::operator int() // Is this equivalent to "int A::operator()" ??
{
return _num;
}
int main()
{
int x = 10;
A objA(x); //creating & initializing
// how to use operator() ?
// int ret = objA(); // compiler error when uncommented
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
operator int()是一个转换函数,它声明用户定义的转换A,int以便您可以编写类似的代码
A a;
int x = a; // invokes operator int()
Run Code Online (Sandbox Code Playgroud)
这不同于int operator()(),它声明一个函数调用运算符,它不带参数并返回一个int.函数调用操作符允许您编写类似的代码
A a;
int x = a(); // invokes operator()()
Run Code Online (Sandbox Code Playgroud)
您要使用哪一个完全取决于您想要获得的行为.请注意,转换运算符(例如operator int())可能会在意外时间被调用,并可能导致恶意错误.