C++成员初始化列表
2015-08-25 15:17
429 查看
class A { public: A() { cout << "class A default constructor called" << endl; a = 0; } A(int param) { cout << "class A constructor called" << endl; a = param; } ~A() { } virtual void FunctionA() { cout << "classA" << endl; } int a; private: }; class B:public A { public: B() { } B(int m):b(m),a(m) { cout <<"class B constructor called" << endl; } ~B() { } virtual void FunctionA() { cout << "classA" << endl; } void FunctionB() { cout << b << endl; } private: int b; }; int main() { A* pA = new B(10); while(1); return 0; }
这里编译器会有一个警告,意思是说a不是B的成员或者基类。 a是不能放在派生类B的初始化列表里进行初始化。
所以在派生类的初始化列表里面,只会进行以下的初始化操作:
派生类的初始化列表:基类的初始化, 派生类本身数据成员的初始化。
相关文章推荐
- C++数组和函数中的指针
- C++数组和函数中的指针
- c++中类对象不能访问类的私有成员变量
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- c++中的array数组和vector数组
- C++运行时类型识别——RTTI
- C++中各种类型的成员变量的初始化方法
- C++异常机制
- C语言切换壁纸和播放音乐
- [LeetCode] Edit Distance
- c语言中浮点数的陷阱
- C++动态链接库的兼容性
- C++中编译预处理功能
- 【more effective c++读书笔记】【第1章】基础议题(2)
- 【more effective c++读书笔记】【第1章】基础议题(2)
- 虚函数的机制
- 把C++的类的方法直接作为线程的回调函数
- C++栈学习——赋值运算法的重载
- 阿里笔试--软开C/C++
- C++ MD5加密实现