重载、隐藏、重写

  这是一个老生常谈的问题。每次看的时候都记得到,后面又忘了。记清楚这个三个词,只需要记住三句话。

1. 当一个函数foo,在同一个作用域内存在两个或两个以上的函数签名,就是“重载”

关键词:同一个作用域、 函数签名不同

2. 当派生类中存在一个有基类带virtual关键字的函数,而且函数参数返回值都相同,这就是“重写”

关键词:具有继承关系、 基类函数带virtual关键字、函数参数和返回值都相同

3. 具有继承关系,但是在派生类中函数的参数或返回值存在不同。 “隐藏”

一般这种问题的时候,基类的函数也会带virtual关键字,主要是让人混淆。
这种时候就是隐藏全部的相同名字的方法。
注意的是:隐藏并不意味着不可访问。依然可以通过作用域解析来访问隐藏的公共成员。

2、构造函数、析构函数、复制赋值运算符

以下三种特殊的成员函数不会被继承
1. 复制构造函数
2. 复制赋值运算符
3. 析构函数
因为基类函数不足以初始化、复制或者销毁派生类的实例。

posted @ 2020-10-10 17:53  cyssmile  阅读(119)  评论(0编辑  收藏  举报