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++
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
深度解读《深度探索C++对象模型》之数据成员的存取效率分析(一)
C++对象在经过类的封装后,存取对象中的数据成员的效率是否相比C语言的结构体访问效率要低下?本篇将从C++类的不同定义形式来一一分析C++对象的数据成员的访问在编译器中是如何实现的,以及它们的存取效率如何?
静态数据成员 全局变量 C++对象模型 C++对象内存布局 C++性能分享 -
关于初始化C++类成员
在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种:第一种方法:
构造函数 初始化列表 初始化 赋值 赋值操作符 -
C++成员变量初始化
class Judgement{public: Judgement():nMaxM(8),nMaxN(3) { //nMaxM = 8;
C++ 职场 休闲 const 成员变量 -
c++ 类内static成员初始化
类内部的static成员,除了为const static 且为整数类型(int char bool)可在类内部初始化。 其他的都建议在对应的cpp文件中进行初始化。 test.h test.cpp
初始化 #include ios #define #ifndef