0
MyObject obj = new MyObject(k);
foo(obj);
bar(&obj);

foo(MyObject &)
bar(MyObject *)

I know we need to use the passed parameter differently in the two functions, but apart from that, in terms of memory allocation or otherwise, is there a difference between the two? I mean for the reference also the compiler would be storing the memory pointer.

4

2 回答 2

1

从编译器(即生成的机器代码)的角度来看,没有实质性的区别。

我不确定,但如果发现cfront使用将引用参数直接转换为指针,我不会感到惊讶。

然而,在语言层面上存在许多差异。例如,一个引用在形式上总是绑定到一个对象(即您没有“NULL 引用”),并且引用不能被重新绑定(而指针变量可以指向其他东西)。

于 2013-09-29T19:40:34.747 回答
0

一个重要的区别是指针可以是 nullptr,而 C++ 没有空引用的概念。

于 2013-09-29T19:30:45.837 回答