如何重载()操作符作为前缀



我想实现两个距离相关类之间的显式类型转换。我需要重载()作为前缀来使用它,如:

class1=(class2)class2_object;

查看用户定义的转换

例子:

struct Y {};
struct X {
     operator Y() const { return ...; } 
};
int main() {
    X x;
    Y y1 = static_cast<Y>(x); // uses conversion operator
    Y y2 = (Y)x; // also possible, but don't use C-style casts in C++!
    Y y3 = x; // even this is possible...
}

在c++ 11中,您可以使用关键字explicit来避免意外的隐式强制转换(即Y y3 = x;):

     explicit operator Y() const { return ...; } 

最新更新