gpt4 book ai didi

c++ - 为什么在 C++ 的另一个类的成员函数中不调用构造函数?

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:07 25 4
gpt4 key购买 nike

我有两个类:AgeAnimal

我认为 Age 的构造函数应该被调用两次:

  • 第一次在 Animal a = Animal(13);
  • 第二次在 a.getAge(); 上(因为函数定义中的 Age temp(age);)

但是... main() 的输出是 Age constructor! 而不是 Age constructor!Age constructor!,所以看起来像这个构造函数只被调用一次(我已经检查过它在构造 Animal 对象时被调用。)。 为什么?

这是我的代码:

class Age {
private:
int value;
public:
Age(int a) :value(a) { cout << "Age constructor!"; }
};

class Animal {
private:
Age age;
public:
Animal(int a) : age(a) {}
Age getAge() const { Age temp(age); return temp; }
};

void main() {
Animal a = Animal(13);

a.getAge();
}

最佳答案

Age temp(age);

它是对复制构造函数的调用,不是默认的。因此,编写复制构造函数并向其添加跟踪,如果您想查看该拷贝已创建。

关于c++ - 为什么在 C++ 的另一个类的成员函数中不调用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26357674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com