可以说我有一个类

Class rofl {
 int a;
 float b;
 rofl::rofl(int a, float b) {
  this->a = a; this->b = b;
 }
}

有可能做
rofl* sup = new rofl(5, 2.0f);
float hello = sup;

这样变量hello将获得sup.b的值?

最佳答案

是的,您可以重载类型转换运算符:

class Rofl {
public:
    operator float() const { return b; }

    ...
};

有关演示,请参见http://ideone.com/Y7UwV

但是,请参阅Scott Meyers的More Effective C++的项目5,标题为“警惕用户定义的转换操作”。允许在复杂类型之间进行隐式转换通常会导致各种细微的错字错误。

关于c++ - 过载返回类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11177418/

10-12 23:07