Chinaunix首页 | 论坛 | 博客
  • 博客访问: 128741
  • 博文数量: 44
  • 博客积分: 86
  • 博客等级: 民兵
  • 技术积分: 249
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-23 22:50
文章分类
文章存档

2012年(32)

2011年(12)

分类:

2012-04-05 15:59:19

原文地址:c ++中继承问题小结 作者:huangliglog

1.c++中继承有公有继承,保护继承,私有继承
定义个基类:

点击(此处)折叠或打开

  1. #include
  2. using namespace std;
  3. class Base
  4. {
  5. public:
  6.       void display()
  7.        {
  8.           cout<<"huang"<
  9.        }
  10. protected:
  11.       int x;
  12. private:
  13.       int y;
  14. };
定义一个派生类:
公有继承:派生类的对象可以访问基类中的公有成员,派生类的成员函数可以访问基类的公有和保护成员,
基类的公有成员和保护成员作为派生类的成员时,保持其原有状态

点击(此处)折叠或打开

  1. class A:public Base
  2. {
  3. public:
  4.       void print()
  5.        {
  6.           cout<<"liglog"<
  7.           display();//派生类内部可以访问基类的公有成员
  8.           x=0;//派生类内部中可以访问基类的保护成员
  9.           cout<
  10.         //y=1;//派生类内部都不可访问基类的私有成员
  11.         //cout<
  12.        }
  13. protected:
  14.     int Ax;
  15. private:
  16.     int Ay;
  17. };
保护继承:派生类的成员函数可以访问基类的公有成员和保护成员,以及基类的公有成员和保护成员作为派生类的保护成员,保护成员还可被派生类的子类访问

点击(此处)折叠或打开

  1. class B:protected Base
  2. {
  3. public:
  4.     void print()
  5.     {
  6.         cout<<"shi"<<endl;
  7.         display();//派生类内部可访问基类的公有成员
  8.         x=1;//派生类内部可访问基类的保护成员
  9.         cout<<x<<endl;
  10. //      y=1;//派生类内部不可访问基类的私有成员
  11. //      cout<<y<<endl;
  12.     }
  13. protected:
  14.     int Bx;
  15. private:
  16.     int By;
  17. };
私有继承:基类的公有成员和保护成员作为派生类的私有成员,不能被派生类的子类访问,即不能被往下继承。

点击(此处)折叠或打开

  1. class C:private Base
  2. {
  3. public:
  4.     void print()
  5.     {
  6.         cout<<"wo"<<endl;
  7.         display();//派生类内部可访问基类的公有成员
  8.         x=1; //派生类内部可访问基类的保护成员
  9.         cout<<x<<endl;
  10. //      y=1; //派生类内部不可访问基类的私有成员
  11. //      cout<<y<<endl;
  12.     }
  13. protected:
  14.     int Cx;
  15. private:
  16.     int Cy;
  17.     
  18. };

 点击(此处)折叠或打开

  1. int main()
  2. {
  3.  // 公有继承部分
  4.     A aObject;
  5.     aObject.display();//派生类外部可以访问基类的公有成员
  6.     aObject.print();
  7.  // aObject.x=1;//派生类外部不可访问基类的保护成员
  8.  // aObject.y=3;//派生类外部不可访问基类的私有成员
  9.  //保护继承部分
  10.     B bObject;
  11.  // bObject.display();//派生类外部不可访问基类的公有成员
  12.     bObject.print();
  13.  // bObject.x=1;//派生类外部不可访问基类的保护成员
  14.  // bObject.y=1;//派生类外部不可访问基类的私有成员
  15.  //私有继承部分
  16.     C  cObject;
  17. //  cObject.display();//派生类外部不可访问基类的公有成员
  18.     cObject.print();
  19. //  cObject.x=1;//派生类外部不可访问基类的保护成员
  20. //  cObject.y=1;//派生类外部不可访问基类的私有成员
  21.     return 0;
  22. }
哪里不对的,指点指点,别指指点点。
阅读(690) | 评论(0) | 转发(0) |
0

上一篇:cygwin 安装

下一篇:pthread api

给主人留下些什么吧!~~