5

在回答这个问题时,我有点困惑。我们都知道,由于 C++ 复制语义,这可以正常工作:

int *some_obj = new int(42);
int a_copy = *some_obj;

delete some_obj;

printf("The answer is %d\n", a_copy);

但是这个呢?

int *some_obj = new int(42);
int& a_ref = *some_obj;

delete some_obj;

printf("The answer is %d\n", a_ref);

这是访问已删除的内存吗?

可能以各种形式多次询问,但这对谷歌不太友好。哎呀,我不能写一个像样的标题。

4

2 回答 2

4

是的。所以这是不允许的。(您可以通过使用具有更改值的析构函数的类来确保看到差异。)

于 2012-06-30T07:43:44.917 回答
1

确切地。第二个示例访问已释放的内存。引用的实现是指针。非常简单。引用是一个不能更改的指针,它具有不同的访问运算符表示法。它们之间没有其他区别。

于 2012-06-30T07:49:20.480 回答