C++小问题

FEI.. 2020-04-28 11:06:59
图二是基类中获取height函数,图二是继承类中给私有数据height重新设置值的函数,(书中说继承类中使用基类的数据成员要使用函数接口,为什么我那样写不正确,而且我把所有的get函数都定义成非const类型),请各位路过的帮帮我这个无知。谢谢啦。
...全文
107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
月凉西厢 2020-04-29
  • 打赏
  • 举报
回复
getter定义为非const,会违背getter的的本义。另外setter和getter不应该有耦合关系。 像你这种情况,如果将getter返回一个引用或指正,height的私有属性将毫无用处。甚至还不如public,因为公有属性还需要通过类实例去访问,而这个返回值可以裸跑。如果实例析构了,这个指针将会悄悄的失效。。 应该把height直接定义为protected。
FEI.. 2020-04-29
  • 打赏
  • 举报
回复
引用 5 楼 zjq9931的回复:
基类也要setHieght啊,否则你到底是获取还是设置呢?
我要设置,setHeight是纯虚函数,在基类中只有接口没有提供具体实现,我在继承类中重新写这个函数。可以吗(´;︵;`)
  • 打赏
  • 举报
回复
基类也要setHieght啊,否则你到底是获取还是设置呢?
FEI.. 2020-04-29
  • 打赏
  • 举报
回复
噢,了解了,谢谢大佬。
FEI.. 2020-04-29
  • 打赏
  • 举报
回复
噢,了解了,谢谢大佬。
FEI.. 2020-04-29
  • 打赏
  • 举报
回复
噢,了解了,谢谢大佬。
FEI.. 2020-04-29
  • 打赏
  • 举报
回复
引用 8 楼 zjq9931的回复:
[quote=引用 6 楼 LINUX/ 的回复:]
[quote=引用 5 楼 zjq9931的回复:]基类也要setHieght啊,否则你到底是获取还是设置呢?

我要设置,setHeight是纯虚函数,在基类中只有接口没有提供具体实现,我在继承类中重新写这个函数。可以吗(´;︵;`)[/quote]
基类的成员又是私有的?纯虚函数就是抽象类了,你还有私有成员变量,干脆不要成员变量算了,况且get不是纯虚,set是纯虚有点乱啊。[/quote] 好,我试试 。
FEI.. 2020-04-29
  • 打赏
  • 举报
回复
引用 7 楼 月凉西厢的回复:
getter定义为非const,会违背getter的的本义。另外setter和getter不应该有耦合关系。 像你这种情况,如果将getter返回一个引用或指正,height的私有属性将毫无用处。甚至还不如public,因为公有属性还需要通过类实例去访问,而这个返回值可以裸跑。如果实例析构了,这个指针将会悄悄的失效。。 应该把height直接定义为protected。
好的,谢谢大佬支持。
  • 打赏
  • 举报
回复
引用 6 楼 LINUX/ 的回复:
[quote=引用 5 楼 zjq9931的回复:]基类也要setHieght啊,否则你到底是获取还是设置呢?

我要设置,setHeight是纯虚函数,在基类中只有接口没有提供具体实现,我在继承类中重新写这个函数。可以吗(´;︵;`)[/quote]
基类的成员又是私有的?纯虚函数就是抽象类了,你还有私有成员变量,干脆不要成员变量算了,况且get不是纯虚,set是纯虚有点乱啊。
Italink 2020-04-28
  • 打赏
  • 举报
回复
getHeight返回的是一个临时变量,你需要返回int&或者int*才能进行赋值

64,685

社区成员

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

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