问一下大家c++派生类初始化的问题

Yilis_ 2019-04-21 10:21:03

如图,CBuliding是一个含有protected成员的基类,CHousing是其派生类,而在初始化的时候我尝试了四种初始化方式,而有两种有错,想问一下大家这是为什么,按道理来说派生类已经具有访问protected成员的权限了,为什么第四种初始化失败而第一种初始化可以,谢谢大家了
...全文
157 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2019-04-22
  • 打赏
  • 举报
回复
1:不是严格意义的初始化,严格意义它是赋值操作。严格意义的初始化:在初始化列表指出,类内初始化(C++11之后得到全面支持) 2:派生类中不可以对基类的成员数据进行直接初始化,这是标准规定的
Italink 2019-04-22
  • 打赏
  • 举报
回复
第一个错误是: 变量(变量)只在函数标签那可以这么用。
第二个错误:明明是在标签那用,为什么还会报错?其实是CHousing每执行一个构造函数,首先会调用父类的构造函数,你可以理解为,每一个CHouseing构造函数的第一条隐藏代码都是CBuliding();所以这样你也就无法在标签中访问父类的数据了,因为标签外都没有构造父类,要进入函数体{},才行
qq_43255148 2019-04-22
  • 打赏
  • 举报
回复
1、变量不能直接用()赋值,在初始化列表的时候可以 2、派生类不能直接对基类的成员函数初始化

65,186

社区成员

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

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