C++:隐藏基本静态成员

Posted

技术标签:

【中文标题】C++:隐藏基本静态成员【英文标题】:C++: Hide base static member 【发布时间】:2009-09-07 01:56:45 【问题描述】:

在 C++ 中,是否可以让子类“隐藏”基类的静态字段和方法? (即 A 有一个名为 ABC 的 int 类型字段,B:A 和 B 有一个名为 ABC 的 int 类型字段)

【问题讨论】:

【参考方案1】:
#include <iostream>

using namespace std;

class A
     public:
    static int a;
;

class B: public A
     public:
      static  int a; // hide base member

 ;

int A::a;
int B::a;
int main()
    A::a=10;
    B::a=20;

    B k;
    cout << "\n" << B::a << k.a;
 return 0;

【讨论】:

是的,它将被隐藏(但如果客户明确指定基类名称,例如A::a,客户仍然可以访问基类的成员)。 或者B::A::a(是一样的)【参考方案2】:

也许:

class B : private A

...
;

这将隐藏所有内容,而不仅仅是静态数据。

【讨论】:

缺少结束分号。 ;D【参考方案3】:

要私下继承吗?

class B : private A 
    // ...
;

【讨论】:

以上是关于C++:隐藏基本静态成员的主要内容,如果未能解决你的问题,请参考以下文章

8-3:C++继承之继承中的作用域,隐藏,重定义和静态成员

面向对象课后深入学习(C++ 类的静态成员详细讲解)

C++入门篇之类和对象总结

C++入门篇之类和对象总结下

C++——静态成员详解

C++——静态成员详解