dev*_*ter 1 c++ const const-reference
我正在使用C++和const引用,并且很困惑为什么这段代码有效:
#include <iostream>
class A {
public:
A() : a_(50) {}
const int& getA() const { return a_; }
private:
const int a_;
};
int main(int argc, char* argv[])
{
A* a = new A();
const int& var = a->getA();
std::cout << var << std::endl;
delete a;
std::cout << var << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
结果:
50
50
Run Code Online (Sandbox Code Playgroud)
这是我的想法:
var存储对a_的引用.
删除a时,也应删除a_.
当再次访问var时,它不再包含有效的引用,并且应该发生分段错误.
为什么这样做?我不相信我是临时副本.
GMa*_*ckG 13
你删除的那一刻a,访问var成为你未定义行为的大门.
这是偶然的"工作".var一个人所指的空间不再是你的空间,但是你这次访问了它.它可能导致分段错误,返回50以外的数字,或重新格式化您的硬盘驱动器.
请记住,似乎工作是未定义行为可以表现出来的一种可能方式.
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |