对临时对象的const引用进行const强制转换会导致未定义行为吗?
Will const-casting a const reference of a temporary cause undefined behavior?
c++允许将临时对象绑定到const引用,从而延长其生命周期。我的问题是:如果我通过常量转换来修改对象,这是未定义的行为吗?让我们假设我的新引用的寿命不会比原来的const-reference长,因此它将始终指向内存中的有效对象。
如果它调用未定义的行为,为什么?对象存在于堆栈中,如果我可以读取它,为什么不能修改它?我理解为什么这可能是一个坏主意,因为临时将很快被销毁,但它是无效的c++吗?在我的测试中,我的程序在修改了临时的
如果想延长临时类型的生命周期,使其成为非const类型,只需将其绑定到右值引用即可。不要做不必要的强制转换。
相关文章:
- 具体来说,标准在哪里规定修改 const 对象是未定义的行为?
- 包括"lvtocon.h",未定义对'operator<<(std::ostream&, char const*)的引用
- 正在通过const-ref未定义的行为捕获新构造的对象
- C++ CMake 构建错误:未定义对"boost::throw_exception(std::exception const&)"的引用
- Cpp 未定义引用 'Apache:: thrift:: transport:: TSocket:: TSocket (std:: string const&, int)'
- 对"displayForStudent(int, int const*, double const*, int)"的未定义引用 collect2.exe:错误:ld 返回 1 个退出状态
- 构建错误:未定义对"cv_bridge::CvImage::toImageMsg() const"的引用
- 对'PreconditionViolatedException::PreconditionViolatedException(std::string const&)'的未定义引用
- Cmake 对 'boost::gregorian::greg_month::as_short_string() const' 的未定义引用
- shared_ptr中对const int的未定义引用
- 对'std::string Helper::ToString<int>(int const&)'的未定义引用
- 错误未定义对"BP::D evice::Create(std::string const&)"的引用
- 对 Stack<int>::p ush(int const&) 的未定义引用
- JsonCpp:未定义的对"Json::Value::operator[](int) const"的引用
- 链接器错误(未定义的引用)与“静态 constexpr const char*”和完美转发
- 在 Ubuntu 14.04 上使用 boost 编译:未定义对 'boost::thread::get_id() const' 的引用
- g++ 4.4 中 std::atomic<const memberfunctionpointer*>::store() 的未定义引用
- 对'icu_56::UnicodeString::UnicodeString(signed char, unsigned short const*, int)' 的未定义引用
- 收到错误"二进制'[':"const typ"未定义此运算符"或"下标需要数组或指针类型
- const_cast const STL 容器,它是未定义的行为