控制对类成员的访问

时间:2012-05-18 00:25:25

标签: c++

class A
{
   private:
           int x;
   public:
           virtual void show()
           {
               cout<<"X: "<<x;
           }
};

class B: public A
{
    public:
           virtual void show()
           {
               cout<<"In class B\n";
               A::show();
           }
};

我的问题是关于成员函数的可访问性。在这个例子中,我们可以说B的成员函数(B的show())可以访问A类中的X.

3 个答案:

答案 0 :(得分:2)

由于x中的private被声明为AB中的任何内容都无法直接访问它。当然,它可以间接访问 - B可以调用可以访问A::show()的{​​{1}}。但是x无法访问B::show()x也无法访问任何其他内容。

答案 1 :(得分:2)

您实际上并未访问A.x,而是访问A.show()

要回答您的问题,B::show() 访问x中的私人成员A

原因是,class A可以更改功能A::show()并执行其他操作,而B只能调用A::show()

这是封装的要点。你可以告诉A去做的事情(比如show()),但A决定如何做。

答案 2 :(得分:0)

  1. A :: show()可以访问它自己的类A类中的任何成员变量。
  2. B类中的成员函数可以访问A类中的任何公共或受保护成员变量
  3. B类中的成员函数可以访问A类中受保护成员函数的任何公共。
  4. 2和3是可能的,因为A的“最易访问级别”被定义为公共。

    Class B: public A
    

    在您的代码中,具体而言,int x;的可访问性级别无关紧要,因为它永远不会直接从B类访问。