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

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

【问题讨论】:

    标签: c++ class oop static field


    【解决方案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 {
        // ...
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      相关资源
      最近更新 更多