c++类继承与 static 成员问题

2021-01-21 13:48:44 +08:00
 emoji

我想问的是,如果父类成员变量不是 static,而子类继承了之后希望将它们变成 static 修饰的,应该怎么做? 是不是直接重新把所有变量写一遍?还是有其他简单的方法? 如果把所有变量重新用 static 修饰一遍,那么这个操作会覆盖掉父类的对应变量,还是全新的变量? 谢谢解答。

1206 次点击
所在节点    程序员
6 条回复
wangxn
2021-01-21 14:09:31 +08:00
看你怎么定义覆盖。子类重新定义成员会隐藏( shadow )父类同名成员,但显式指定父类的名字还是能访问到父类的成员的,所以两者是共存的。
这不是一个好的用法。
nightwitch
2021-01-21 14:15:46 +08:00
emoji
2021-01-21 14:16:22 +08:00
@wangxn 感谢回复,那请问有没有子类同名 static 变量替换父类非 static 变量的方法呢?
emoji
2021-01-21 14:20:01 +08:00
@nightwitch 非常感谢,一目了然
wamson
2021-01-21 14:42:34 +08:00
请不要这样子做,code review 会被喷的。
编译的时候,静态成员变量是放到全局区,普通成员变量是跟随类实例的,所以没有替换这一说法,只能子类重定向到新的静态变量,但是父类的同名变量还是会存在的。
emoji
2021-01-21 15:09:51 +08:00
@wamson 感谢指点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/747008

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX