C++中的对象变量包含值,而不是对象引用

6 c++ reference object

在:http://www.horstmann.com/ccj2/ccjapp3.html,在A3.4.对象,提到以下内容:

在C++中,对象变量包含值,而不是对象引用

你能澄清这一点吗?并且,它只是pointer在C++中持有对象引用吗?

我们可以在这说这object referenceobject address吗?

谢谢.

ybu*_*ill 6

你能澄清这一点吗?

最好通过与Java或C#进行比较来理解:

MyClass a = new MyClass; // creates an instance.
MyClass b = a; // we still have one instance of MyClass in memory
Run Code Online (Sandbox Code Playgroud)

与C++相反:

MyClass a; // a *is* an instance of MyClass.
MyClass b = a; // we make a copy of a, now there are *two* instances of MyClass.
Run Code Online (Sandbox Code Playgroud)

而且,只有C++中的指针才能保存对象引用吗?

不,也是参考.

我们可以在这里说对象引用是对象地址吗?

不,如果您的意思是A&参考,那么它就是一个实现细节.您也可以使用与C#类似的引用语义来实现对象.xml_node在pugixml库中就是一个例子:

xml_node root = ...;
xml_node root2 = root; // doesn't copy the document
// root2 refers to the same object as root.
Run Code Online (Sandbox Code Playgroud)


Mot*_*tti 5

C++ 支持值/指针/引用的概念。如果将值int传递给修改参数的函数,则值就像 Java ,原始值不变,这称为值语义。

在 Java 中,大多数对象都具有引用语义,这意味着变量不存储对象,它存储对对象的引用,以便如果通过一个引用修改对象,则所有其他引用都会看到更改。这在 C++ 中也支持引用和指针。指针是对象的内存地址,引用的行为在语义上类似(并且通常在幕后用指针实现)。说引用是对象的地址是不正确的,对象的地址将是指向该对象的指针。

有关更多详细信息,请参阅参考和值语义