c++ - 如果仅存在私有(private)函数,则访问基类中的私有(private)数据类型

标签 c++ inheritance private

给定下面的代码,如果基类中的函数通过使用继承来保护,我们可以访问基类的私有(private)数据。我的问题是,如果基类中的所有方法也都设置为私有(private),是否有任何方法可以访问私有(private)数据?

class Base

{
int i;

protected:
  void set(int data){
      i = data;
  }
  int get(){
      return i;
  }
};

class derive: Base{
public:
    void change(int x){
        set(x);
        cout<<get()<<endl;
    }
};

int main()
{
   derive b;
   b.change(3);
   return 0;    
}

最佳答案

“如果基类中的函数通过继承得到保护,我们就可以访问基类的私有(private)数据”,不,你并不是真的在访问私有(private)数据。您正在为您执行此操作的基类中调用一个 setter。不,您将无法调用基类的私有(private)方法。

关于c++ - 如果仅存在私有(private)函数,则访问基类中的私有(private)数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28465756/

相关文章:

c# - 不一致的可访问性 : Base Class is less accessible than class

python - 在python中访问另一个类中一个类的私有(private)变量

transactions - 以太坊可以进行私有(private)交易吗?

c++ - 您如何比较 valarrays 与内置数组的性能?

c++ - 没有默认构造函数和错误输出

java - java中继承中实现代码重用

swift 。让我们重写但不调用该方法

c++ - 当作为参数传递的对象超出范围时,析构函数是否会调用自身?

c++ - 非阻塞套接字上的 select()、recv() 和 EWOULDBLOCK

oop - 如何从API扩展ui