C++ 构造函数的对象初始化列表
Posted 庖丁解牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 构造函数的对象初始化列表相关的知识,希望对你有一定的参考价值。
//构造函数的对象初始化列表 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class PointA{ public: PointA(int _x){ x = _x; } void GetX(){ printf("PointA的成员变量%d\n",x); } private: int x; }; class PointB{ public: //构造函数的初始化列表 PointB(int _a, int _b) :pa(_b), pa3(_b), pa2(_b) { //备注:先初始化 pa,其次pa2,再次pa3,与对象初始化列表没有关系,只与成员变量的定于顺序有关系 //PointB的对象在成员变量之后初始化 a = _a; } void GetA(){ pa.GetX(); printf("PointB的成员变量a的值是%d\n",a); } private: int a; PointA pa; PointA pa2; PointA pa3; }; void ProtectA(){ //PointB pb1; //报错 error C2512: “PointB”: 没有合适的默认构造函数可用 //分析:类PointB中有成员变量pa,pa对应的类没有提供无参构造函数,pb1的默认无参构造函数无法初始化pb1的成员变量pa PointB pb2(3, 4); pb2.GetA(); } void main(){ ProtectA(); system("pause"); }
以上是关于C++ 构造函数的对象初始化列表的主要内容,如果未能解决你的问题,请参考以下文章
C++中,继承时,创建子类对象,能否在子类构造函数初始化列表里调用基类构造函数?