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

Pio*_*ski 1 c++ constructor

我有两个班: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();
}
Run Code Online (Sandbox Code Playgroud)

For*_*veR 5

Age temp(age);
Run Code Online (Sandbox Code Playgroud)

它调用复制构造函数,而不是默认值.因此,编写复制构造函数并向其添加跟踪,如果要查看,则创建该副本.