C++ get和typecasting之间的用法区别是什么?我应该使用哪一个?

use*_*343 2 c++ casting

#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返回一个副本.

log*_*og0 5

唯一的区别是类型转换可能是隐含的.

int i = a;
Run Code Online (Sandbox Code Playgroud)

请注意,c ++ 11允许您强制显式调用强制转换运算符.

explicit operator int() { return k; }
Run Code Online (Sandbox Code Playgroud)