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

时间:2014-10-06 01:49:07

标签: c++

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

我想知道它是否是Animal Cat = Dog。要么 Animal Cat = &Dog。 我想知道差异是什么。

2 个答案:

答案 0 :(得分:3)

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

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

在你的第二个例子中,你实际上是在接受" Dog,"并将其分配给非指针类型(动物)。第二个版本不会编译,因为类型不匹配。

差异很大。我们正在讨论对象和指向对象的指针。指针的值是内存中的地址,而对象的值是对象的数据本身。

答案 1 :(得分:0)

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