(十五)面向对象程序设计

来源:互联网 发布:单片机编程题 编辑:程序博客网 时间:2024/04/30 10:31

显示改写虚函数,override在形参列表后面,有const的在const的后面,在最后


动态绑定:当使用基类的引用(或指针)调用一个虚函数时将发生动态绑定.


析构函数应该被定义成虚析构函数,当遇到一个类A的指针,如果是虚析构函数,那么会调用具体类的析构函数(并逐层向上调用析构函数),否则会调用类A的析构函数,可能会造成释放不正确.析构函数都会调用上层基类的析构函数.


其实虚函数造增加了耦合,并非是一个好的决策,应该尽量的设计成不需要虚函数,每个类只管自己的那一部分.


访问控制:是程序员的自我限制,目的是为了减少失误的错误,而非限制编程的能力.


派生类列表:首先是一个冒号,之后以逗号分隔的基类列表,每个基类列表都可以有相应的访问控制说明符.此访问控制并非限制本类的访问权限,而是限制外部调用本来时可访问的基类权限,即派生类把基类加为自己的成员,访问控制为对应的说明符.


派生类会执行基类的构造函数,如果没有显示构造则会调用默认构造函数.首先执行基类的初始化,然后执行基类的构造函数体,然后执行自己的初始化,最后执行自己的函数体.


final:防止被继承,在类名后面加final;防止虚函数被覆盖,可在形参后面加 final


虚函数的默认实参由本次调用的静态类型决定,因为是编译时确定.


派生类如果私有继承基类,那么派生类的地址不能赋值给基类,包括引用.因为基类部分是私有的.


派生类可以改变继承基类的部分成员访问控制,使用using

private:

using base::size;


如果派生类需要移动函数,拷贝函数等,则基类必须实现,因为基类部分也需要实现整体才有.


继承的构造函数,编译器生成一个与之对应的派生类构造函数

class tc :public base{  public:    using base::base;    //编译器将生成构造函数形如:    //tc(parms) :base(args){}}

默认实参不会被继承,派生类将获得多个继承的构造函数.

0 0
原创粉丝点击