关于public,protected,private

本文详细解析了 C++ 中 public、protected 和 private 的使用方式及其对继承的影响。通过具体的代码示例,展示了不同继承方式下成员函数的可见性和可访问性规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. #include <iostream>
  2. using namespace std;
  3. class Base
  4. {
  5. public:
  6.  Base() { }
  7.  ~Base() { }
  8. public:
  9.  void FuncA() { cout << "FunA" << endl; }
  10. protected:
  11.  void FuncB() { cout << "FuncB" << endl; }
  12. private:
  13.  void FuncC() { cout << "FuncC" << endl; }
  14. };
  15. class CA : public Base
  16. {
  17. public:
  18.  CA() 
  19.  {
  20.   FuncA();
  21.   FuncB();
  22.   //FuncC(); // Error
  23.  }
  24.  ~CA() { }
  25. };
  26. class CB : protected Base
  27. {
  28. public:
  29.  CB()
  30.  {
  31.   FuncA();
  32.   FuncB();
  33.  // FuncC(); // Error
  34.  }
  35.  ~CB()
  36.  {}
  37. };
  38. class CC : private Base
  39. {
  40. public:
  41.  CC()
  42.  {
  43.   FuncA();
  44.   FuncB();
  45.   //FuncC(); // Error
  46.  }
  47.  ~CC()
  48.  {
  49.  }
  50. };
  51. int main( int argc, char *argv[] )
  52. {
  53.  CA a;
  54.  CB b;
  55.  CC c;
  56.  a.FuncA(); 
  57.  //a.FuncB(); // Error
  58.  //b.FuncA();  // Error
  59.  //b.FuncB();  // Error
  60.  //c.FuncA();   // Error
  61.  //c.FuncB();   // Error
  62.  return 0;
  63. }

关于public,protected,private
对于类实例(对象)的可见性:public可见,其他不可见
对于派生子类的可见性:public,protected可见,private不可见

用作派生方式时,如

public派生方式:
基类的public作为子类的public声明,基类的protected作为子类的protected声明,private当然还是private

protected派生方式:
基类的public和protected都作为子类的protected声明,private还是private

private派生方式
基类的声明都作为自己的private声明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值