C++为类中提供类成员的初始化列表
类对象的构造顺序是这样的:
1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员
2.进入构造函数后在构造函数中执行一般计算
1.类里面的任何成员变量在定义时是不能初始化的。
2.一般的数据成员可以在构造函数中初始化。
3.const数据成员必须在构造函数的初始化列表中初始化。
4.static要在类的定义外面初始化。
5.数组成员是不能在初始化列表里初始化的。
6.不能给数组指定明显的初始化。
这6条一起,说明了一个问题:C++里面是不能定义常量数组的!因为3和5的矛盾。这个事情似乎说不过去啊?没有办法,就只好转而求助于静态数据成员。
到此,我的问题解决。但是趁机复习一下C++类的初始化:
1.初始化列表:CSomeClass::CSomeClass() : x(0), y(1){}
2.类外初始化:int CSomeClass::myVar=3;
3.const常量定义必须初始化,C++类里面使用初始化列表;
4.C++类不能定义常量数组。
相关文章
- C++类成员的初始化
- c++ 类数据成员的定义、声明
- 定义一个Book(图书)类,在该类定义中包括: (1)数据成员:bookname(书名)、price(价格)和number(存书数量)。 (2)成员函数:display(显示图书的情况;borrow(
- C++ 类中的static成员的初始化和特点
- [转]C++ 类中的static成员的初始化和特点
- c++语言中类中的静态数据成员为什么必须在类体外初始化?
- 静态数据成员只能在类体外,且通过函数体进行初始化(静态数据成员是在程序编译时被分配空间的)
- c++模板类成员的声明和定义
- 【C++指南】类和对象(三):类的默认成员函数——全面剖析: 析构函数
- C++类成员变量的初始化