c++ 继承
来源:互联网 发布:java调用ant打包 编辑:程序博客网 时间:2024/06/17 13:35
public继承:
父类public成员被子类public继承后,父类成员将属于子类的public成员;
通过子类的对象可以访问父类的public成员 或成员函数;
父类protected成员被子类public继承后,父类成员将属于子类的protected成员;
通过子类的对象只能访问子类的成员函数,无法访问父类的protected成员 或成员函数;
父类private成员不能被子类public继承。
protected继承:
通过子类的对象只能访问子类的成员函数,无法访问父类的public成员 或成员函数;
父类protected成员被子类protected继承后,父类成员属于子类的protected成员;
通过子类的对象只能访问子类的成员函数,无法访问父类的protected成员 或成员函数;
父类private成员不能被子类 protected继承。
private继承:
父类public成员被子类 private继承后,父类成员将属于子类的 private成员;
通过子类的对象只能访问子类的成员函数,无法访问父类的public成员 或成员函数;
父类protected成员被子类 private继承后,父类成员将属于子类的 private成员;
通过子类的对象只能访问子类的成员函数,无法访问父类的protected成员 或成员函数;
父类private成员不能被子类 private继承。
#include<iostream>using namespace std;//////////////////////////////////////////////////////////////////////////class A //父类{private: int privatedateA;protected: int protecteddateA;public: int publicdateA;};//////////////////////////////////////////////////////////////////////////class B :public A //基类A的派生类B(共有继承){public: void funct() { int b; b=privatedateA; //error:基类中私有成员在派生类中是不可见的 b=protecteddateA; //ok:基类的保护成员在派生类中为保护成员 b=publicdateA; //ok:基类的公共成员在派生类中为公共成员 }};//////////////////////////////////////////////////////////////////////////class C :private A //基类A的派生类C(私有继承){public: void funct() { int c; c=privatedateA; //error:基类中私有成员在派生类中是不可见的 c=protecteddateA; //ok:基类的保护成员在派生类中为私有成员 c=publicdateA; //ok:基类的公共成员在派生类中为私有成员 }};//////////////////////////////////////////////////////////////////////////class D :protected A //基类A的派生类D(保护继承){public: void funct() { int d; d=privatedateA; //error:基类中私有成员在派生类中是不可见的 d=protecteddateA; //ok:基类的保护成员在派生类中为保护成员 d=publicdateA; //ok:基类的公共成员在派生类中为保护成员 }};//////////////////////////////////////////////////////////////////////////int main(){ int a; B objB; a=objB.privatedateA; //error:基类中私有成员在派生类中是不可见的,对对象不可见 a=objB.protecteddateA; //error:基类的保护成员在派生类中为保护成员,对对象不可见 a=objB.publicdateA; //ok:基类的公共成员在派生类中为公共成员,对对象可见 C objC; a=objC.privatedateA; //error:基类中私有成员在派生类中是不可见的,对对象不可见 a=objC.protecteddateA; //error:基类的保护成员在派生类中为私有成员,对对象不可见 a=objC.publicdateA; //error:基类的公共成员在派生类中为私有成员,对对象不可见 D objD; a=objD.privatedateA; //error:基类中私有成员在派生类中是不可见的,对对象不可见 a=objD.protecteddateA; //error:基类的保护成员在派生类中为保护成员,对对象不可见 a=objD.publicdateA; //error:基类的公共成员在派生类中为保护成员,对对象不可见 return 0;}
*** 值得注意的是:外部调用(如主函数中直接调用)只能调用public里的成员及函数。内部成员函数(在同一个类里面)却可以调用包括其本身的public、protected、private内成员。
- c继承
- C++----------------继承
- 【c#】继承
- C++:继承
- C++::继承
- [C++]继承
- 【C++】继承
- 【C#】继承
- 【c++】继承
- 【C++】继承
- c#-继承
- 【C++】 继承
- 【C#】继承
- C++|继承
- 【C++】继承
- C/C++--私有继承
- [C/C++]继承
- c++:私有继承,公有继承,保护继承
- UVa
- 数据结构第八周项目3--对称矩阵压缩存储的实现与应用
- Mac ChromeDriver
- 30分钟掌握ES6/ES2015核心内容(上)
- PAT (Basic Level) Practise (中文)1053. 住房空置率 (20)
- c++ 继承
- linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定
- Maven升级篇--聚合和继承
- MySQL中的数据类型<转载>
- conda install更新速度解决
- WordPress自定义友情链接位置排序插件
- java关于float类型和int类型数据转换为字符串(吃软不吃硬)
- 用自己的数据集在R-FCN框架下进行检测
- tensorFlow解决问题ImportError: No module named 'tensorflow.python.pywrap_tensorflow_internal'