c++ - 丢弃 const of *this 会导致未定义的行为吗?

标签 c++ constants undefined-behavior

下面的代码编译。它似乎运行良好。

但是它会导致任何未定义的行为吗?

我想抛弃 *this 的常量。

这是为了允许 const my_iterator 改变它指向的数据。

测试:

class A {
public:
    A(const int x) : x_(x) {}
    void set_x(int x) { x_ = x; }
    void set_x2(const int x) const {
        const_cast<A&>(*this).set_x(x);
    }
    int x_;
};

int main() {
    A a(10);
    a.set_x2(100);
}

最佳答案

您的示例不是未定义行为,因为 a 不是 const。但是,如果 aconst,它将是:

int main() {
    const A a(10);
    a.set_x2(100);
}

关于c++ - 丢弃 const of *this 会导致未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50163959/

相关文章:

c++ - 将 const 放在函数声明之后是什么意思?

class - 类内常数

c++ - C/C++ : Is this undefined behavior?(二维数组)

c - printf 以连续函数作为参数,未定义的行为

c++ - 随着用户需求的增加创建对象数组?

.net - Win32 控制台应用程序与 CLR 控制台应用程序

c++ - 如何阻止 Flex 为每条规则将空格输出到标准输出

c++ - 是否允许编译器在重载解析期间选择 const ref 而不是 ref?

c - mmap 和 VirtualAlloc 是否符合 C 标准?

c++ - 使用同一个 DLL 的多个版本