V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
emoji
V2EX  ›  程序员

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

  •  
  •   emoji · Jan 21, 2021 · 2024 views
    This topic created in 1922 days ago, the information mentioned may be changed or developed.

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

    6 replies    2021-01-21 15:09:51 +08:00
    wangxn
        1
    wangxn  
       Jan 21, 2021 via iPhone
    看你怎么定义覆盖。子类重新定义成员会隐藏( shadow )父类同名成员,但显式指定父类的名字还是能访问到父类的成员的,所以两者是共存的。
    这不是一个好的用法。
    nightwitch
        2
    nightwitch  
       Jan 21, 2021
    emoji
        3
    emoji  
    OP
       Jan 21, 2021
    @wangxn 感谢回复,那请问有没有子类同名 static 变量替换父类非 static 变量的方法呢?
    emoji
        4
    emoji  
    OP
       Jan 21, 2021
    @nightwitch 非常感谢,一目了然
    wamson
        5
    wamson  
       Jan 21, 2021
    请不要这样子做,code review 会被喷的。
    编译的时候,静态成员变量是放到全局区,普通成员变量是跟随类实例的,所以没有替换这一说法,只能子类重定向到新的静态变量,但是父类的同名变量还是会存在的。
    emoji
        6
    emoji  
    OP
       Jan 21, 2021
    @wamson 感谢指点
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5180 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:41 · PVG 17:41 · LAX 02:41 · JFK 05:41
    ♥ Do have faith in what you're doing.