gpt4 book ai didi

C++ 类运算符自类型转换

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:26 25 4
gpt4 key购买 nike

我如何在一个类中创建一个运算符函数,用于将其他类型转换为该类的对象?

例如

class MyClass
{
// ...
// operator ??
// ...
}

int main()
{
MyClass obj;
int Somevar;
obj=(MyClass)Somevar; // class typecast
}

一般来说,是否有一个运算符允许这种类型转换在精确的语法中?

最佳答案

只需添加一个接受一个参数的构造函数:

class MyClass {
explicit MyClass(int x) { … }
};

称为:

MyClass x = static_cast<MyClass>(10); // or
MyClass y = MyClass(10); // or even
MyClass z(10);

这允许在您的示例中进行显式 转换。 (也支持 C 风格的转换语法,但我不会在这里展示它,因为你不应该永远使用 C 风格的转换。它们是邪恶的和不必要的。)

有时(但非常很少),隐式转换更合适(例如,将 char* 转换为 std::string作业)。在这种情况下,删除构造函数前面的 explicit 限定符:

class MyClass {
MyClass(int x) { … }
};

现在可以从 int 进行隐式转换:

MyClass a = 10;

但是,这通常不是一个好主意,因为隐式转换不直观且容易出错,因此您通常应将构造函数标记为 explicit

关于C++ 类运算符自类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com