函数重载是C++中引入的机制,在C中是没有的,以下几点需要牢记:

1.重载的函数声明应该位于同一作用域内,否则可能仅仅形成函数的覆盖。

2.重载的函数,它们的形参表一定是有差异的,要么是对应形参类型不同,要么是形参个数不同;它们的函数名一定相同;它们的返回值可以相同,也可以不同;它们的方法体可以相同,也可以不同,这是与函数模板之间最为明显的区别。

3.重写的函数,它们的返回值、函数名、形参表均相同,唯一不同的就是方法体的实现;重写的函数分别位于基类与子类中,通过指向子类的父类指针进行动态调用。

接下来我们了解一下操作符重载函数,对操作符的重载仅仅限于C++内部定义好的操作符,不能自己编一个出来,操作符重载是为了让自定义类型也能够进行加减乘除等类似运算操作,其一般声明在该类的定义中。

如果声明为成员函数,以在student类中实现加法重载为例,其实现形式为:student operator + (const student& s),注意const与&是必不可少的,至于原因就不大记得了。某些操作符重载函数返回值需要作为左值来接收新的赋值,比如数组下标[ ],因此需要把返回值写为引用,比如:int& operator [ ] (const Array& a)。

如果声明为友元函数,那么其声明形式为:friend student  operator + (const student&s1,const student& s2),这是因为友元函数并不能看成是类的成员函数,所以其不包含this指针,也不能用对象.方法的方式进行调用,因此把参与计算的两个对象全部写入了形参表中。

操作符重载函数中有一种比较特殊的,即类型转换操作符重载函数,它既没有返回值也没有一个形参,方法体内一般也只包含一个return语句,返回另一个类的构造函数,如在类B中重载一个转换为类A的操作符:operator A() {return A();},当然,构造函数不一定是默认的,嘻嘻。

C++之函数重载重铸版相关推荐

  1. 《C++ Primer 第五版》(第6.3~6.7节)——返回指向数组/函数的指针,函数重载,默认形参、inline函数和constexpr函数

    1.返回指向数组/函数的指针 顾名思义,就是函数返回值为指向数组/函数的指针. 数组的性质:不能被拷贝,函数也不能返回数组.但可以返回数组指针/引用,声明一个返回数组指针的函数,有四种方式,一种是直接 ...

  2. 【C++学习笔记】函数返回和函数重载

    一.返回类型和return语句   return语句终止当前执行的函数并将控制权返回到调用该函数的地方,return语句有两种形式: return: return expression; 1.1 无返 ...

  3. C++ |【01】面向对象基础内容、引用、函数重载等....

    文章目录 一.概述 1.简介 2.C++程序 2.1 初步接触C++ 2.2 面向过程 2.3 面向对象 2.4 面向对象的三大特性 2.4.1 封装 2.4.2 继承 2.4.3 多态 3.C++对 ...

  4. 函数重载与函数模板的比较

    函数重载与函数模板是两个有些相似的概念,它们使用的函数名都一样,但用处不同.下面对两者进行简要介绍并指出它们的区别和联系. 函数重载(overloaded) 即定义函数名相同而形参列表(形参个数或形参 ...

  5. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)

    每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...

  6. 函数重载需要注意的点

    基本概念: 作用:函数名可以相同,提高复用性 函数重载满足的条件: 1.同一作用域 2.函数名相同 3.函数参数类型不同,个数不同,顺序不同 基本规则就上面那几条,不多说了,开始难一些的东西: 1.函 ...

  7. JavaScript中实现函数重载和参数默认值

    2019独角兽企业重金招聘Python工程师标准>>> 参数默认值是指在调用函数时,若省略了某个实参,函数会自动为该参数分配一个默认值,使得函数调用的方便性和灵活性大大提高. 举个例 ...

  8. 《C++成员函数重载、覆盖与隐藏》

    <成员函数的重载.覆盖与隐藏> ------------------------------------------------------------------------------ ...

  9. 函数重载(overload)

    函数重载(overload) 先看一个例子 #include<iostream> using namespace std; //计算两个参数a,b的乘积的函数 int multiply(i ...

最新文章

  1. 第十讲 二阶齐次常系数线性ODE(续)
  2. 福州首届.NET开源社区技术交流会圆满成功
  3. 《Python黑帽子:黑客与渗透测试编程之道》 Web攻击
  4. HDU1003——MAX SUM
  5. 如何修改博客园里个人首页背景(form:cot 大犇)
  6. Cli4.5.x 中使用axios请求数据
  7. 解读全球热点,传递科研进展,这份AI内参要承包你的AI信息源
  8. velocity--shiro
  9. 【代码优化】考虑使用静态工厂方法代替构造器
  10. 网页版QQ、MSN等等聊天工具web版大全
  11. 基于stm32单片机PT100铂电阻温度采集系统
  12. 360wifi驱动 linux ap,360wifi驱动
  13. Python保留指定位数的小数
  14. 来个模态kuang_使用 React 制作一个模态框
  15. 提示计算机未安装flash,win10系统提示未安装Flash的解决方法
  16. 经典面试题 之 分库分表
  17. 龙芯3a5000部署nacos 1.4低版本方法
  18. 英式音标26字母发音规律
  19. 计算机桌面上字太宽怎么办,电脑屏幕字体怎么变大_电脑字体变大如何调-win7之家...
  20. arctanx麦克劳林公式推导过程_多元正态分布的推导、n维球体积面积的计算

热门文章

  1. zookeeper全面总结
  2. 单招计算机面试技巧和注意事项,单招面试时的六大注意事项
  3. 【GlobalMapper精品教程】037:构建泰森多边形(Thiessen Polygon)实例精解
  4. 汇编--十进制转化为十六进制
  5. 打电话给你,为什么不接?
  6. 四年上册级计算机教学计划,关于小学数学四年级上册的教学计划
  7. 2021年美股接着上演牛气冲天?一文览尽全球投行的前瞻精华
  8. note3正在升级android,小米Note3焕发青春,喜提MIUI 10 9.6.1更新,底层升级安卓9.0
  9. return 0和return的区别
  10. Mac常见问题:通过iPhone和iPad减少iCloud备份大小