派生类不能在成员初始化列表中直接初始化基类的成员
来源:互联网 发布:iphone监控软件 编辑:程序博客网 时间:2024/05/17 02:31
派生类不能在成员初始化列表中直接初始化基类的成员
初始化基类成员
构造函数是不可继承的。因此,派生类的构造函数必须通过调用基类的构造函数初始化基类成员,不能够在派生类初始化列表直接初始化基类的成员,“越级初始化”。派生类的构造函数的一般格式为:
派生类名(形参表):基类名1(形参表1),基类名2(形参表2)···
{···}
注意事项:
(1)在创建派生类对象时,先调用基类的构造函数,然后调用派生类的构造函数;撤销对象时,析构函数被调用的顺序则相反。
(2)若派生类中包含对象成员,则派生类的构造函数初始化成员列表中既要列出基类的构造函数也要列出对象的构造函数。派生类定义对象时,先调用基类的构造函数,再调用对象的构造函数,最后调用派生类的构造函数。
像 c++ primer习题15.16 (a)
- struct base
- {
- base(int val):id(val){}
- protected:
- int id;
- };
- struct c1:public base
- {
- c1(int val):id(val){}
- };
- 编译会产生如下错误:
- 1>.\1508.cpp(12) : error C2512: “base”: 没有合适的默认构造函数可用
- 1>.\1508.cpp(12) : error C2614: “c1”: 非法的成员初始化:“id”不是基或成员
0 0
- 派生类不能在成员初始化列表中直接初始化基类的成员
- 派生类不能在成员初始化列表中直接初始化基类的成员
- 派生类中的成员初始化列表
- 为什么不能在子类的初始化列表里初始化父类的成员
- 为什么不能在子类的初始化列表里初始化父类的成员
- 为什么不能在子类的初始化列表里初始化父类的成员
- 派生类初始化基类成员时的特殊问题
- C++类中引用成员和常量成员的初始化(初始化列表)
- C++初始化类成员列表
- C++类成员初始化列表
- C++为类中提供类成员的初始化列表
- C++为类中提供类成员的初始化列表
- C++为类中提供类成员的初始化列表
- 类成员的初始化--成员初始化列表(常量,引用,成员对象)
- 为什么static成员必须在类外初始化,而不能在类的头文件中初始化
- VC6.0中,整型const static成员不能在类的定义体中初始化.
- C++ 类初始化列表的成员初始化顺序
- C++为什么用初始化列表初始化类的成员变量
- 提起2013,我所领悟到的
- 几个有意思的算法题
- jquery表格奇偶行设置不同颜色
- php 密码生成类
- STM32时钟配置方法详解
- 派生类不能在成员初始化列表中直接初始化基类的成员
- C语言经典算法01
- Single Number
- C语言经典算法02
- 【UI-BCG】在菜单上点击时显示或隐藏 对应窗口
- 史上最全设计模式导学目录(完整版)
- C语言经典算法03
- poi操作excel(主要为合并单元格和导出excel)
- iOS Dev (7) Single View App