关于C++中的继承和重载的区别
2016-06-02 18:33
615 查看
C++中的很多特性光从概念上的话,很难做区分。或者说,概念让人容易模糊,比如说函数重载和函数继承。
先说重载,重载分为操作符重载和函数名重载,其中,操作符重载就是对运算操作符的原有功能进行自定义设置。比如+运算符,一般只用作对数字的相加。但是,从在运算符之后,可以实现对象的相加处理。要对运算符进行重载,一般格式为:函数类型 operator 函数名称(形参列表){};
operator就是重载操作符。
对于运算符重载,这个是比较好辨识的,但是对于函数重载的话,往往和接口继承之间很容易引起混淆。其实呢,在它们的英文名称中,更加容易引发误会。重载的英文是overload,而继承的则是overwrite。这个就是它们之间的区别。overwriter用来解释继承其实是很好的,就是有覆盖、重写的含义。
如何做区分?函数重载并不会修改掉原函数的接口和功能,而是会添加一个相同的函数名称,而返回值或形参类型不同的函数。而继承呢,则是会改写掉原函数接口的功能,属于覆盖掉原函数的功能。而overload,属于新增的一个接口,其实是对原函数进行功能扩展的一种。
也就是说,重载和继承之间没有什么关系,这个概念也主要是因为在java中,对重载直接称为overload,而对继承则是overwrite。所以两者的差别引发大家的误会。
先说重载,重载分为操作符重载和函数名重载,其中,操作符重载就是对运算操作符的原有功能进行自定义设置。比如+运算符,一般只用作对数字的相加。但是,从在运算符之后,可以实现对象的相加处理。要对运算符进行重载,一般格式为:函数类型 operator 函数名称(形参列表){};
operator就是重载操作符。
对于运算符重载,这个是比较好辨识的,但是对于函数重载的话,往往和接口继承之间很容易引起混淆。其实呢,在它们的英文名称中,更加容易引发误会。重载的英文是overload,而继承的则是overwrite。这个就是它们之间的区别。overwriter用来解释继承其实是很好的,就是有覆盖、重写的含义。
如何做区分?函数重载并不会修改掉原函数的接口和功能,而是会添加一个相同的函数名称,而返回值或形参类型不同的函数。而继承呢,则是会改写掉原函数接口的功能,属于覆盖掉原函数的功能。而overload,属于新增的一个接口,其实是对原函数进行功能扩展的一种。
也就是说,重载和继承之间没有什么关系,这个概念也主要是因为在java中,对重载直接称为overload,而对继承则是overwrite。所以两者的差别引发大家的误会。
相关文章推荐
- c++指针
- C++ 变量命名约定和风格
- C++中#include <xxx.h>和#include "xxx.h"的区别(尖括号和双引号的区别)
- Struct和Class的区别
- C++中#include的工作原理
- C++11 | 运行时类型识别(RTTI)
- 李洪强-C语言5-函数
- c++学习课时二 简单的判断&&循环
- 第十三周【项目3-形状类族的中的纯虚函数】
- Eclipse运行C++问题Launch failed,Binary not found
- 详解Windows下Eclipse CDT 配置C-C++ 编译环境
- C++中ifstream使用笔记(二)(gdb调试案例BUG)
- 【C++】StreamString清空用法
- leetcode 160 Intersection of Two Linked Lists C++
- C++ STL--stack/queue 的使用方法
- 设计模式之建造者模式(C++实现)
- 【C语言】10-字符和字符串常用处理函数
- 使用VC++6.0 MFC OLE操作Excel 进行简单的读写
- C++ 常用的字符串处理函数实现
- 分数类中的运算符重载