peter_wu1994 2016-12-15 08:09 采纳率: 0%
浏览 3429
已结题

c++ 派生类 拷贝构造函数 调用基类的构造函数

在进入派生类(derived)的拷贝构造函数之前,就已经调用了基类(based)的构造函数,
无论你有没有显示的调用。
一般派生类是这种形式:
derived(const derived & d):based(d)
{}

为什么使用下列形式不行
derived(const derived & d)
{
based::based(d);
}
即在派生类构造函数内部调用基类构造函数。调试的时候发现无法访问基类的私有成员。
为什么使用初始化列表就可以访问基类的私有成员

  • 写回答

9条回答 默认 最新

  • 企鹅爱吃方便面 2016-12-15 09:31
    关注

    1.成员类型是没有默认构造函数的类。若没有提供显示初始化式,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。
    2.const成员或引用类型的成员。因为const对象或引用类型只能初始化,不能对他们赋值。
    以上两种只能使用初始化列表去初始化。一般情况下,选用初始化列表初始化。
    另外,不能直接使用父类的构造器,原因是父类的构造器是不能被子类继承的。
    构造函数也不能被当做一般的函数来使用。

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办