赞
踩
继承:龙生龙,凤生凤,老鼠儿子会打洞。
sizeof可以验证继承了基类中的所有成员变量
public 的继承方式,结合子类对象对基类成员函数的调用,可以得到子类对基类的成员函数继承(所有资源都被继承。基类中public成员在子类中权限也是public。)
#include<iostream> using namespace std; class Base { //父类 public: void Set(int pri,int pro,int pub) { _pri = pri; _pro = pro; _pub = pub; } void Print() { cout << _pri << " " << _pro << " " << _pub << endl; } int _pub; protected: int _pro; private: int _pri; }; class Son1 : Base //子类 //无继承方式 { }; class Son2 : public Base //子类 //public继承方式 { public: void Set(int pri, int pro, int pub) { _pri = pri; //这句报错:在子类中访问私有的成员变量不可以访问。 _pro = pro; //保护可以访问 _pub = pub; } }; int main() { cout << sizeof(Son1) << endl; //大小是12; 成员变量能够继承 Son1 s; s.Set(); s.Print(); //这样就报错了,因为需要有继承方式 system("pause"); return 0; }继承方式:
public、private、protected
- public :所有资源都被继承。基类中public成员变量在子类中权限也是public;基类中保护的成员变量在子类中直接访问其访问权限也是保护的,但是在类外不行;基类中私有的成员变量在子类中是是存在的但看不见。(想让后代知道,不想让别人知道。所以保护的可以访问,私有的不能访问)
- protected:基类中public成员变量在子类中权限发生改变,是protect(类中能访问,类外不能访问);基类中保护的成员变量在子类中访问权限也是保护的,但是在类外不行;基类中私有的成员变量在子类中是是存在的但看不见。
- private:基类中public成员变量在子类中权限发生改变,是private(类中能访问,类外不能访问);基类中保护的成员变量在子类中访问权限也是protect,但是在类外不行;基类中私有的成员变量在子类中是是存在的但看不见。
实际运用几乎都是public。(图中的成员权限是基类的)
赋值兼容规则:
子类对象可以当作父类对象使用;
子类对象可以直接赋值给父类对象;
子类对象可以直接初始化父类对象;
父类指针可以直接指向子类对象;
父类引用可以直接引用子类对象;
在替代之后,派生类对象就可以作为基类的对象使用,但是只能使用从基类继承的成员。
子类就是特殊的父类。同名成员变量和成员函数通过作用域分辨符进行区分。
判断某一句话,能否被访问:
如何恰当的使用public,protected和private为成员声明访问级别:
一般情况下用public。
继承的构造函数和析构函数:
如何初始化父类成员?父类与子类的构造函数有什么关系?
一个类有多个直接基类的继承关系称为多继承。
格式:class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n
多继承的派生类构造和访问:
如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的名字进行访问时,可能产生二义性。
友元函数注意事项:
- class Base
- {
- friend void fun();
- public:
- Base(int a = 0, int b = 0, int c = 0)
- : _pub(a)
- , _pro(b)
- , _pri(c)
- {}
- int _pub = 1;
- protected:
- int _pro = 2;
- private:
- int _pri = 3;
- };
- class Derive :public Base
- {};
- int main()
- {
- Derive d1;
- d1.fun();
- return 0;
- }
-

结果是报错:fun函数不是派生类的成员函数,说明friend函数不能被继承。
本文借鉴的博客:https://blog.csdn.net/zyl_1102179268/article/details/60789742
本文借鉴的博客:https://blog.csdn.net/qq_27563511/article/details/80934742
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。