-
1\公有成员可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问
2\保护成员不可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问
3\私有成员不可以直接访问,可以间接通过自身类的公有函数访问,不可以通过子类的公有函数访问
查看全部 -
3-6查看全部
-
C++多继承定义方法:
class 类名: public 要继承的类1,public 要继承的类2{
};
不写继承的访问修饰符默认private
查看全部 -
"" :是在用“”的当前文件的同目录下搜索
<> : 是搜索程序的默认库(系统自带的),不在当前的目录下,头文件数据库
查看全部 -
私有继承 如图
查看全部 -
保护继承 如图
查看全部 -
公有继承 如图
查看全部 -
类的析构函数使用多态性(动态绑定)时,需要申明为虚函数。保证在delete释放基类指针(指向子类)释放资源时,即释放基类资源也释放派生类资源。不使用虚函数,会导致析构不完整,这种情况下delete基类指针只会调用父类的析构函数,从而不能释放子类的资源。
查看全部 -
使用虚继承时虽然不会重复调用最顶层父类,但参数只能使用最顶层父类默认值,而不能读入子类设置值
不是虚继承的情况下,实例化子类对象的时候,要分别执行其2个父类的父类构造函数,再分别执行2个父类的构造函数,因为继承关系中,必须实例化父类对象后(执行父类的构造函数)才能实例化子类对象(执行子类的构造函数),销毁的时候也要分别执行这个子类2个父类的析构函数及父类各自的父类的析构函数。<br> 用了虚继承后只执行一次爷爷构造函数一次爸爸构造函数(2个爸爸构造函数都只执行一次)一次孙子构造函数,爷父孙析构函数也是只执行一次。<br>
查看全部 -
注:使用虚继承时虽然不会重复调用最顶层父类,但参数只能使用最顶层父类默认值,而不能读入子类设置值
查看全部 -
virtual虚继承:
解决菱形继承或者其它复杂继承关系中多次实例化同一父类的问题
查看全部 -
1、多重继承
A为B的父类,B为C的父类,则称C为多重继承
当实例化C时,先调用A的构造函数,再调用B,最后调用C
释放空间时,按照构造函数调用顺序逆序进行
2、多继承
A、B均为C的父类
构造函数调用时依次调用定义的父类,释放空间时逆序进行
查看全部 -
在实例化父类指针指向子类时,释放内存时只释放父类
//Person为父类,Worker为子类 Person *p=new Worker; p->eat(); delete p; p=NULL//只是释放Person类,可能会造成worker类内存泄漏
解决方法:引入virtual虚析构函数
virtual可以继承下去,即便子类中不写该关键字也是虚析构函数
查看全部 -
二、继承中的特殊关系
1、隐藏
子类B公有继承父类A,若B中含有与A重名的函数或数据成员,则称子类B将父类A中的函数或数据成员隐藏了起来。
实例化B后,调用隐藏函数时直接调用子类B里的,若要调用父类A的,应用以下格式:例如:soldier.person::play();
查看全部 -
protected继承方式:
public与private继承到protected访问属性中,private无法访问
private继承方式:
public与protected继承到private访问属性中,private无法访问
查看全部
举报