c++ - 如何重载 () 运算符作为前缀?

标签 c++

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

class1=(class2)class2_object;

最佳答案

user-defined conversion .

示例:

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 ...; } 

关于c++ - 如何重载 () 运算符作为前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23566127/

相关文章:

c++ - 未指定的错误找不到作者

c++ - 'malloc' 和 'new' 是如何工作的?它们有何不同(实现方面)?

c++ - 懒惰的程序员将 vbscript/hta 文件包装在一个独立的静态链接的 c++ exe 中的方法

c++ - C/C++ 结构与类

android - QT Widget 使用 OpenCV 错误部署到 Android

c++ - 为什么编译器只向后查找类型和函数声明?

c++ - 3d 数组声明导致段错误

c++ - 无法在 gRPC 中使用 proto 3.0 缓冲区生成客户端代码

c++ - 防止通过派生类调用基类中的静态方法?

C++ 通用输出运算符重载