关于默认构造函数

LGTXZXM 2016-07-05 05:13:10
最近看郑阿奇的《visual c++使用教程》(第四版)P116页,有这样一句话:

与 “A(int a=100){x=a}”构造函数等价的是:
A( int a){x=a;}
A():x(100){}

构造函数“A(int a=100){x=a}” 怎么能包含了默认构造函数:A():x(100){}呢?高手能指点一下不?谢谢!!
...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2016-07-06
  • 打赏
  • 举报
回复
因为默认参数的原因
penghuahuijuan 2016-07-06
  • 打赏
  • 举报
回复
引用 2 楼 qq423399099 的回复:
因为A(int a=100){x=a}这样写的时候,int a=100有这句(这句是带默认值的) 如果你传入了参数参与构造,那么会使用你传入的值,如果没有就会使用默认值100 1.如果不传参数,那么会用默认值100给成员变量x赋值,相当于是A():x(100){} 2.如果传入参数,那么会用传入的值赋值给成员变量x,相当于A( int a){x=a;}
bluewanderer 2016-07-05
  • 打赏
  • 举报
回复
如果那是书上原话我只能诅咒作者一个月得四次流感了... 所有参数都有默认值的构造函数能在需要默认构造的场合用。 但另一方面函数体里赋值能和初始化等价?
gh_99 2016-07-05
  • 打赏
  • 举报
回复
A():x(100){} 用初始化列表来初始化类A中的x变量。
mei想好xi 2016-07-05
  • 打赏
  • 举报
回复
引用 楼主 LGTXZXM 的回复:
最近看郑阿奇的《visual c++使用教程》(第四版)P116页,有这样一句话: 与 “A(int a=100){x=a}”构造函数等价的是: A( int a){x=a;} A():x(100){} 构造函数“A(int a=100){x=a}” 怎么能包含了默认构造函数:A():x(100){}呢?高手能指点一下不?谢谢!!
他的意思就是,给x赋值,a可以省了。
fefe82 2016-07-05
  • 打赏
  • 举报
回复
想一下 A a1(1); A a2; 的时候,两种情况下分别会发生什么 ============ 默认构造函数,是没有参数,或者所有参数都有默认值的构造函数
小灸舞 2016-07-05
  • 打赏
  • 举报
回复
因为A(int a=100){x=a}这样写的时候,int a=100有这句(这句是带默认值的)
如果你传入了参数参与构造,那么会使用你传入的值,如果没有就会使用默认值100

1.如果不传参数,那么会用默认值100给成员变量x赋值,相当于是A():x(100){}
2.如果传入参数,那么会用传入的值赋值给成员变量x,相当于A( int a){x=a;}
LGTXZXM 2016-07-05
  • 打赏
  • 举报
回复
构造函数写成: “A(int a=100){x=a}” 或写成: A( int a){x=a;} 前者就包含了默认构造函数,而后则却没有包含,为什么呢?

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧