跳转到主内容
极星编程网:以代码为星,赴技术山海!

C++ 重载与重写的区别与实现

目录1 . 前言2 . 差异图3 . 重载4 . 重写5 . 小结1 . 前言在面向对象语言中,经常提到重载与重写,以下内容直观描述两者差异

成员函数被重载的特征:

(1)相同的范围(在同一个类中);

(2)函数名字相同;

(3)参数不同;

(4)virtual关键字可有可无。

重写是指派生类函数重写基类函数,是C++的多态的表现,特征是:(1)不同的范围(分别位于派生类与基类);

(2)函数名字相同;

(3)参数相同;

(4)基类函数必须有virtual关键字。

2 . 差异图其中,重写要求父类有虚函数模式函数名参数列表返回值重载一样不一样不一样重写一样一样一样3 . 重载下图所示 : 以下的func的参数列表多了int x或者返回值与父类函数不一样,因此为重载,父类声明虚函数的意义在于是否想要让子类重写class Obj_A{

private:int a;

public:virtual void func() {

}};

class Obj_B : public Obj_A{private:int a;

public:void func(int x) {

}int func() {

}};4 . 重写下图所示 : 父类func声明为虚函数,子类声明函数并且不改变函数名,不改变参数列表,不改变返回值,因此为重写class Obj_A{

private:int a;

public:virtual void func() {

}};

class Obj_B : public Obj_A{private:int a;

public:void func() {

}};5 . 小结重载改变函数结构,重写不改变函数结构(1)范围区别:重写和被重写的函数在不同的类中,重载和被重载的函数在同一类中。

(2)参数区别:重写与被重写的函数参数列表一定相同,重载和被重载的函数参数列表一定不同。

(3)virtual的区别:重写的基类必须要有virtual修饰,重载函数和被重载函数可以被virtual修饰,也可以没有。

到此这篇关于C++ 重载与重写的区别与实现的文章就介绍到这了,更多相关C++ 重载与重写内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:C++深入探究重载重写覆盖的区别C++函数重载、隐藏与覆盖重写的精通指南C++填坑的重写,重载和隐藏的详解C++之重载 重定义与重写用法详解浅谈C++重载、重写、重定义C++中重载、重写(覆盖)和隐藏的区别实例分析

相关文章