如果我创建派生对象,它首先调用基构造函数,然后调用派生构造函数。这是否意味着当我们创建派生对象时,父对象也会被创建?
我不认为会创建父对象,但为什么会调用父构造函数?
#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
};