C++重载、重写、隐藏的区别

重载的特点:
    1、在同一作用域中

    2、函数名相同、参数个数或参数类型不同,返回值可同可不同
重载的目的:

    重载又称为静态多态,静态绑定,静态决议等。因为要实现重载,所以C++和C的命名方式有所不同。重载主要是为了减轻程序员对函数名的记忆负担,让所有功能相似的函数使用同一名字。

隐藏的特点:
    1、在不同作用域中,分别在基类和派生类中

    2、隐藏只要求函数名相同就行

    3、在派生类中只要不是重写就是隐藏
隐藏的目的:

    隐藏是因为在子类中定义了与基类同名的函数,而将基类的函数隐藏掉,要想访问基类的函数,则必须加作用域限定符。

覆盖(重写)的特点:

    1、不再同一作用域中,分别在父类和子类中

扫描二维码关注公众号,回复: 2564092 查看本文章

    2、要求函数名相同,函数参数列表相同,返回值也相同(协变除外)

    3、基类函数必须是虚函数(virtual)

    4、访问修饰符可以不同

覆盖(重写)目的

    覆盖是指父类中的虚函数在子类中被重新定义,所以在子类对象的虚函数列表中将由子类中重新定义的函数地址覆盖掉原来父类中虚函数的地址.

猜你喜欢

转载自blog.csdn.net/CherishPrecious/article/details/81410155
今日推荐