[英]Implicit Conversion Operator Overloading syntax
我是一个中级C ++用户,我遇到了以下情况。 下面显示的类定义使用g ++编译器编译得很好。 但我无法确定整个语法的含义。
我的猜测是函数operator int()
返回一个int
类型。
而且,我无法弄清楚如何在main()
使用重载的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;
}
任何帮助将不胜感激。
operator int()
是一个转换函数 ,它声明用户定义的从A
到int
转换,以便您可以编写类似的代码
A a;
int x = a; // invokes operator int()
这与int operator()()
,它声明了一个不带参数的函数调用运算符并返回一个int
。 函数调用操作符允许您编写类似的代码
A a;
int x = a(); // invokes operator()()
您要使用哪一个完全取决于您想要获得的行为。 请注意,转换运算符(例如, operator int()
)可能会在意外时间被调用,并可能导致恶意错误。
你可以用这个
#include <iostream>
using namespace std;
class A{
public:
A(int n) { _num=n;}
operator int();
private:
int _num;
};
A::operator int(){
return _num;
}
int main(){
A a(10);
cout<<a.operator int()<<endl;
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.