如果我们创建一个派生对象,父对象是否也会自动创建



如果我创建派生对象,它首先调用基构造函数,然后调用派生构造函数。这是否意味着当我们创建派生对象时,父对象也会被创建?

我不认为会创建父对象,但为什么会调用父构造函数?

#include<iostream>
using namespace std;
class A {
public :  A(){ 
cout<<"inside A constructor"<<endl;
}
};
class B : public A{
public : B(){
cout << "inside B constructor" << endl;
}
};
int main() {
B b; 
return 0;
} 

输出:

inside A constructor
inside B constructor

我不认为父对象会被创建[…]

你错了。

CCD_ 1由CCD_ 2子对象和CCD_。考虑这个例子:

struct A {
int a = 0;
};
struct B : A {
B() {}
};
int main() {
B b;
b.a = 42;
}

B继承了A的成员。这些成员并非凭空而来,但它们是B类型为A的子对象的一部分,必须进行构造。当您没有显式调用构造函数时,它将是默认构造的。以上大致相当于:

struct A {
int a = 0;
};
struct B : A {
B() : A() {}
// ^^^ call default constructor of A
};

最新更新