gpt4 book ai didi

c++ - 运算符重载和 const_cast 的使用

转载 作者:行者123 更新时间:2023-11-30 04:32:46 25 4
gpt4 key购买 nike

对于下面的代码片段,

class A{
const int a;
public:
A(): a(0){}
A(int m_a):a(m_a){};
A& operator =(const A &other);
};
A & A::operator =(const A &other)
{
const_cast<int&>(a) = other.a;
return *this;
}

行是什么

A & A::operator =(const A &other)

const_cast<int&>(a) = other.a;

是什么意思?或者为什么要这样定义这个运算符?换句话说,我对它的用法和定义/编写的方式感到困惑。

最佳答案

const_castconst 成员 a 中移除 const,从而允许从 赋值other.a 成功(没有 const_cast a 的类型将是 const int,因此它不会是可修改)。

可能的想法是 a 在类构造时被初始化并且不能在任何其他地方“按设计”修改,但是类的作者决定为赋值做一个异常(exception)。

我对这段代码有复杂的感觉,通常使用 const_cast 是糟糕设计的症状,另一方面,允许赋值但保留 可能是合乎逻辑的>const 用于所有其他操作。

关于c++ - 运算符重载和 const_cast 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7423213/

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