c子类构造函数初始化父类成员_C++日志(三十二)类继承时复制构造函数

0411103ca8e6afcf7030ec3189a25050.png

C++中,复制构造函数主要有三个作用:用类的一个对象初始化另一个对象、函数的形参和实参结合、函数返回对象。在继承时,子类的复制构造函数语法如下:

子类::子类(const 子类 &子类引用名):父类1(子类引用名),父类2(子类引用名)...

其中,“父类n”表示子类所继承的父类,所有的父类都使用“子类引用”作为父类复制构造函数的参数。因为,根据“类型兼容规则”有“子类对象可以隐含的转换为父类引用”。

例子:

下面的例子中,类X和类Y都有自己的复制构造函数,类Point继承了X和Y,Point的复制构造函数用于自身复制,并将引用传递给其父类:

class X {
    
public:
	X() {};
	X(const X &ref) {
     printf("copy X!!! n"); }
};

class Y {
    
public:
	Y() {};
	Y(const Y &ref) {
     printf("copy Y!!! n"); }
};

class Point: public X, public Y {
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,子类构造函数可以在初始化列表中初始化成员变量。 在C++中,当子类构造函数被调用,首先会调用父类构造函数初始化父类成员变量。这是通过在子类构造函数初始化列表中调用父类构造函数来完成的。 下面是一个示例,演示如何在子类构造函数初始化父类成员变量: ```cpp #include <iostream> class ParentClass { public: int parentValue; ParentClass(int value) : parentValue(value) { std::cout << "ParentClass constructor called with value: " << parentValue << std::endl; } }; class ChildClass : public ParentClass { public: int childValue; ChildClass(int parentValue, int childValue) : ParentClass(parentValue), childValue(childValue) { std::cout << "ChildClass constructor called with parent value: " << parentValue << " and child value: " << childValue << std::endl; } }; int main() { ChildClass obj(10, 20); return 0; } ``` 输出结果: ``` ParentClass constructor called with value: 10 ChildClass constructor called with parent value: 10 and child value: 20 ``` 在这个示例中,我们有一个父类ParentClass和一个子类ChildClass。父类有一个成员变量parentValue,子类有一个成员变量childValue。在子类构造函数中,我们使用初始化列表来调用父类构造函数,并传递相应的参数。这样,父类成员变量parentValue会被正确地初始化。 希望这个示例对你有帮助!如果你还有其他问题,请随提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值