1.面向对象的几大特点
封装、继承、多态
.
.
.
2.虚函数
类成员函数前面添加virtual关键字的函数被称为虚函数。
作用是实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名成员函数。
比如父类中的一个虚函数,在不同的子类中有不同的重写它的同名函数,要一次性把装在数组中的多个子类对象的该函数都调用一遍,就可以将其基类的该函数定义为虚函数,用一个基类指针遍历子类数组的同时调用函数。
.
.
.
3.构造函数和析构函数
C++中,构造函数不可以是虚函数,而析构函数可以且常常是虚函数。
为什么析构函数常常是虚函数?
因为在C++编程中,经常用基类指针指向子类对象,并通过指针操作子类对象。
此时要通过这个指针delete它指向的子类对象时,如果基类析构函数不是虚函数,它就只会调用基类析构函数不会调用子类析构函数,导致内存释放的不彻底。
.
.
.
4.重载和重写的区别
4.1重载
在同一个类中可以有多个同名函数,它们的参数和返回值可以不同。这叫重载。
4.2重写
在子类中重写父类的函数,从子类对象调用时,执行的是子类中重写的函数,而不是父类中的同名函数。父类函数被屏蔽。这叫重写。
.
.
.
5.多态
用基类指针操作不同子类的对象中的同一函数,函数执行的操作不同。
需要将基类的该函数定义为虚函数。