C++是怎么构造函数的初始化列表
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,C++是怎么构造函数的初始化列表,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.问题class A {private:
千家信息网最后更新 2025年11月07日C++是怎么构造函数的初始化列表
C++是怎么构造函数的初始化列表,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1.问题
class A {private: int m_a;public: A(int a) { cout << "A(int a)......." << endl; m_a = a; } void print() { cout <<"m_a=" << m_a << endl; }};class B {private: int m_b; A m_a1; A m_a2;public: B(A& a1,A& a2, int b) { m_b = b; m_a1(a1);//此处调用A的拷贝函数会报错 m_a2(a2);//此处调用A的拷贝函数会报错 }};错误:

2.解决方法(初始化列表)
将class B构造函数改写为:
public: B(A& a1,A& a2, int b) :m_a1(a1),m_a2(a2)//构造函数的初始化列表 { m_b = b; }};完整代码如下:
#includeusing namespace std;class A {private: int m_a;public: A(int a) { cout << "A(int a)......." << endl; m_a = a; } void print() { cout <<"m_a=" << m_a << endl; } A(const A& another) { m_a = another.m_a; } ~A() { cout << "~A()......" << endl; }};class B {private: int m_b; A m_a1; A m_a2;public: B(A& a1,A& a2, int b) :m_a1(a1),m_a2(a2)//构造函数的初始化列表,调用拷贝构造 { cout << "B(A& a1,A& a2, int b)......." << endl; m_b = b; } ~B() { cout << "~B()......." << endl; cout << "m_b=" << m_b << endl; cout << "A m_a1" << endl; m_a1.print(); cout << "A m_a2" << endl; m_a2.print(); }};int main(int argc, char** argv) { A a1(1), a2(2); B b1(a1, a1, 3);}
运行结果:

3.顺序问题
构造对象成员的顺序跟初始化列表的顺序无关,而是跟成员对象定义的顺序有关。(面试会问)
例子:
class A {private: int m_a;public: A(int a) { cout << "A(int a)......." <结果:
跟下面顺序有关:
private: A m_a2; A m_a1;
跟下面顺序无关:
B(int a1, int a2, int b) :m_a1(a1), m_a2(a2)//调用有参构造函数
看完上述内容,你们掌握C++是怎么构造函数的初始化列表的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
函数
顺序
问题
拷贝
方法
C++
内容
对象
成员
更多
结果
会报
有关
束手无策
为此
代码
例子
原因
对此
技能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mongo db数据库备份
gdc服务器维护密码
软件开发出口要报商务局吗
黑客恢复微信软件数据库
mysql数据库及应用 徐人凤
我的世界暗之楼服务器客户端
端口号是服务器的还是主机的
mq 服务器
互联网时代的科技进步
应用软件开发高级工程师
叠纸 服务器开发
软件开发设计方案环境设计
网络技术简答题 题库
瑞铂慧家互联网科技
服务器声音怎么改
musql数据库安装报错
上海合纵网络技术有限公司
亿联网络技术岗笔试题
java提取数据库数据
电脑服务器一直响显示屏连不上
数据库置疑修复提示拒绝访问
江苏gps网络时钟服务器价格
mysql访问不同数据库
网络技术配置路由器
深度学习服务器性能对比
数据库域号
数据库还原失败错误5
我的世界外国的服务器
武汉的银行软件开发
网络安全工作认真学习