常用概念有:继承、虚函数、纯虚函数、多态、覆盖、重载、隐藏等
1、继承:
继承比较好理解,主要注意继承中构造函数的调用顺序。构造子类(派生类)的时候,先要调用父类(基类)的构造函数。
2、虚函数:
virtual关键字
3、纯虚函数
virtual void breath() = 0;
纯虚函数让基类先具有一个操作名称,没有操作内容,让派生类在继承时再去具体的给出定义。凡是有纯虚函数的类叫抽象类,这种类不能声明对象,只是作为基类为派生类服务,在派生类中必须完全实现基类的纯虚函数。否则,派生类也成了抽象类,不能实例化对象。
4、多态:
多态性是用虚函数类实现的,而不是纯虚函数。
多态用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的世纪类型来调用相应的函数。(迟绑定或者叫动态绑定)
5、覆盖:
构成函数覆盖的条件为:
1)基类函数必须是虚函数;(virtual)
2)发生覆盖的两个函数要分别位于派生类和基类中;
3)函数名称与参数列表必须完全相同。
6、重载:
函数参数类型、参数个数不同才能构成重载。重载发生在同一个类中。
7、隐藏:
派生类中具有与基类同名的函数(不考虑参数列表是否相同),从而在派生类中隐藏了基类的同名函数。
隐藏、重载、覆盖容易混淆,简单的区别是:
1)重载发生在同一个类中,隐藏和覆盖都发生在派生类与基类中;
2)派生类与基类中,如果两个函数函数名称与参数列表完全相同,基类函数中如果使用了virtual,则属于覆盖,如果没有使用virtual,则属于隐藏。
3)派生类与基类中,如果两个函数函数名称相同,参数列表不同,不管基类函数前是否使用了virtual,都属于隐藏
8、引用:
引用是变量的别名,必须在声明的时候初始化。引用和用来初始化引用的变量共用同一块内存。
引用与指针变量的区别:
1)引用是一个别名,不占用内存地址空间,与初始化它的变量占用同一块内存;
2)指针就是地址,要占用存储空间。