继承中的static成员变量和成员函数探究

我们知道:子类在继承父类时拥有父类的所有成员,子类可以访问父类的属性和方法(父类中private权限修饰的无法访问),那么对于父类中的静态成员变量和静态成员函数的继承结果是怎么样的呢?

1.继承中的静态成员变量

子类可以继承使用父类的 static 变量,可以使用 Child::num 去获取,但是注意此时跟 Parent::num 其实是同一个内存地址空间的变量,因此不能在定义的时候又在父类写 int Parent::num = 0,又在子类写 int Child::num = 0,会出现重复定义。

2.继承中的静态成员函数

如果子类没有定义自己的 static int GetNum() 函数,那么可以通过子类作用域调用父类的 GetNum 静态成员函数,如果子类定义了自己的 static int GetNum() 函数,那么通过子类作用域调用的时候就调用的是子类的 GetNum 函数,注意:不能通过 virtual 使静态成员函数产生多态,因此静态成员函数不能加 virtual 修饰。

猜你喜欢

转载自blog.csdn.net/weixin_38102771/article/details/88211800