将对象及其数据成员复制到另一个对象

Copying Objects and its data members to another object

本文关键字:一个对象 复制 数据成员 对象      更新时间:2023-10-16

假设我们有一个名为Animal的类型结构,我们有两个名为Cat和Dog的对象。我正试图编写一段代码,声明一个名为Cat的对象,并将其数据成员初始化为与另一个名名为Dog的对象相同的值。这两个对象的类型都是结构Animal。

我想知道是不是Animal Cat = Dog。或CCD_ 2。我也在想有什么不同。

您的第一次尝试是对的。这里可以看到一个变体:

Animal cat("silvester");
Animal dog("fido");
cat = dog;

在第二个例子中,您实际上取了"Dog"的地址,并将其分配给非指针类型(Animal)。第二个版本不会编译,因为类型不匹配。

差别是巨大的。我们谈论的是对象,以及指向对象的指针。指针的值是内存中的一个地址,而对象的值是对象的数据本身。

这两个语句都是复制初始化的示例。与equals的rhs上的表达式类型匹配的构造函数就是所选择的。所以,你的问题实际上是关于如何将参数传递给通过引用接受它们的函数。答案是,它看起来就像你传递价值时的样子。&前缀采用变量的地址,并在传递指向函数的指针时使用。因此,如果您的Animal有一个类似于Animal::Animal(Animal*)的构造函数,那么它将由调用Animal Cat = &Dog拾取。

相关文章: