#include <iosteam>
using namespace std;
Class A
{
int k;
public:
int getK() { return k; }
operator int() { return k; }
};
int main()
{
A a;
cout << a.getK() << " " << int(a) << endl;
}
Run Code Online (Sandbox Code Playgroud)
有什么区别,我应该使用哪一个?我想知道类型转换是否返回引用而getK返回一个副本.
唯一的区别是类型转换可能是隐含的.
int i = a;
Run Code Online (Sandbox Code Playgroud)
请注意,c ++ 11允许您强制显式调用强制转换运算符.
explicit operator int() { return k; }
Run Code Online (Sandbox Code Playgroud)