系列文章目录
C++构造函数初始化https://mp.csdn.net/mp_blog/creation/editor/124911403
C++的拷贝构造https://mp.csdn.net/mp_blog/creation/editor/124911603
C++学习之重载https://blog.csdn.net/qq_45068835/article/details/124916308
目录
系列文章目录
文章目录
前言
一、public继承
父类public成员
父类protected成员
父类private成员
二、protected继承
父类public成员
父类protected成员
父类private成员
三、private继承
父类public成员
父类protected成员
父类private成员
代码示例
总结
前言
提示:这里可以添加本文要记录的大概内容:
例如:主要介绍C++中类的继承public、protected、private三类。
继承最简单的理解就是:父类授予子类的最大最大权限
一、public继承
父类public成员
对于父类是public的可以直接访问内部的成员变量,且子类实例化对象之后,对象可以直接访问父类的public成员变量。
父类protected成员
对于父类是protected的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的protected成员变量,但是可以通过成员函数进行访问。
父类private成员
对于父类是private的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的private成员变量,但是可以通过父类中的public、protected类型的成员函数进行访问。
二、protected继承 父类public成员
对于父类是public的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的public成员变量,但是可以通过成员函数进行访问,这里的成员函数可以是父类的也可以是子类的。
父类protected成员对于父类是protected的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的protected成员变量,但是可以通过成员函数进行访问。
父类private成员对于父类是private的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的private成员变量,但是可以通过父类中的public、protected类型的成员函数进行访问。
三、private继承 父类public成员
对于父类是public的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的public成员变量,但是可以通过成员函数进行访问,这里的成员函数可以是父类的也可以是子类的。
父类protected成员对于父类是protected的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的protected成员变量,但是可以通过成员函数进行访问。
父类private成员对于父类是private的无法直接访问内部的成员变量,且子类实例化对象之后,对象无法直接访问父类的private成员变量,但是可以通过父类中的public、protected类型的成员函数进行访问。
代码示例
代码如下(示例):
代码如下(示例):
#include#include using namespace std; class A { public: int pa; protected: int ta; private: int sa; public: //由于初始化列表并不是内存过程的赋值顺序,因此这里容易出bug, //因此在初始化列表中,要按照定义的顺序为变量进行赋值 A() :pa(100),sa(pa),ta(pa) { } }; //继承方式是父类授予子类的最高权限 //保护的只能在子类中访问 //私有的是不被访问的 // class CA : public A { public: void show() { cout << pa << endl; cout << ta << endl; //cout << sa << endl; } private: }; class CA2 : private A { public: void show() { cout << pa << endl; cout << ta << endl; //cout << sa << endl; } private: }; class CA3 : protected A { public: void show() { cout << pa << endl; cout << ta << endl; //cout << sa << endl; } private: }; int main() { //什么也不继承时,分配了1字节的内存 //一旦继承,就会继承所有的变量的值,包括私有的、保护的、公开的 //虽然他们存在,到那时私有的是不能访问的 例如sa cout << sizeof(CA) << endl; CA ca; ca.show(); CA2 ca2; ca2.show(); CA3 ca3; ca3.show(); }
总结
例如:关于类的继承,最大的原则就是父类授予子类的最高权限,但是一般都可以通过成员函数来访问内部的成员变量。



