gpt4 book ai didi

来自不同类型的 C++ 默认赋值运算符

转载 作者:搜寻专家 更新时间:2023-10-31 00:28:24 26 4
gpt4 key购买 nike

我有以下类作为基本类型 bool 的包装器:

class MyBoolean {
public:
MyBoolean(bool value = false):value(value) {};
virtual ~MyBoolean() {};

void MySpecialFunction();
...

private:
bool value;
}

我想在表达式中像普通 bool 一样使用 MyBoolean。也就是说,对其进行赋值、比较等。为此,我定义了赋值和隐式类型转换运算符。

inline operator bool() const {
return value;
}
inline bool operator = (const bool &rhs) {
return value = rhs;
}

不过似乎不需要赋值运算符。以下代码仅使用类型转换运算符进行编译,而无需赋值运算符:

MyBoolean b;
b = true;

为什么编译器不提示它不能将 bool 分配给 MyBoolean? C++ 中不同类型的赋值运算符的默认实现是什么?

最佳答案

你的构造函数 MyBoolean(bool value = false) 是一个“converting constructor”并且允许编译器使用这样的一个来生成一个隐式转换(在本例从 boolMyBoolean)。

如果您不希望构造函数用于隐式转换,则将其声明为explicit - 如

explicit MyBoolean(bool value = false)

关于来自不同类型的 C++ 默认赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45417262/

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