在C++中,调用派生构造函数是否创建基对象?


#include<iostream>
using namespace std;
class Base{
private:
int x;
public:
Base(int i){
x = i;
}
void print(){
cout<<x<<endl;
}
};
class Derived: public Base{
public:
Base b;
public:
//the constructor of the derived class which contains the argument list of base class and the b
Derived(int i, int j): Base(i), b(j)
{}

};
int main(){
Derived d(11, 22);
d.print();
d.b.print();
return 0;
}

为什么b.x的值是 11,而d.b.x的值是 22?

如果基类的构造函数初始化类Base中的 intx,是否存在Base对象?

在派生构造函数的参数列表中,当有作为类成员的Base b时,应该有一个参数还是两个参数?

Derived的构造函数使用其第一个参数(11)来初始化其基类Base,因此成员Derived.x的值为11。这是d.print()输出的内容。

Derived的构造函数使用其第二个参数 (22) 来初始化其成员b(其类型为Base)。这是d.b.print()输出的内容。

这里有两个Base对象。dDerived,也是Base。成员d.b也是Base

Derived构造函数的参数列表可以是您想要的任何内容,具体取决于您希望如何初始化其任何内容。

i的值分配给类Derived的变量xj的值分配给对象的变量xbDerived中声明。Derivedxbx是两个不同的变量。如果要将值分配给b,则需要第二个参数。可以显式调用 forBase的构造函数,作为在Derived构造函数中使用 2 个参数的替代方法。

相关内容

  • 没有找到相关文章

最新更新