在这种情况下,我不确定 const_cast。我们是否有未定义的行为?
#include <iostream>
#include <vector>
using namespace std;
struct A {
mutable vector<int> a;
A() : a(1,2) {}
const vector<int>& get() const {
return a;
}
};
int main()
{
A a;
vector<int> &b = const_cast<vector<int>&>( a.get() );
b[0] = 3;
cout << a.a[0] << endl;
}
最佳答案
修改非常量的变量是明确定义的。 const_cast
的存在正是为了允许使用 const 引用修改非常量对象(尽管名称不同,但对 volatile 的作用类似)。示例代码中没有未定义的行为。
关于c++ - 当我们从类中返回可变对象时 const_cast 的未定义行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36042674/