【C++自我精讲】基础系列三 重载
分二部分:函数重载,操作符重载。
函数重载:指在同一名字空间中,函数名称相同,参数类型、顺序或数量不同的一类函数,同一函数名的函数能完成不同功能。
//非函数重载,只是返回值不一样
void Fun(int i);
int Fun(int i); //非函数重载,不在同一名字空间
namespace A
{
int Add(int i, int j);
};
namespace B
{
float Add(float i, float j);
}; //函数重载
int Add(int i, int j);
float Add(float i, float j);
重命名机制:函数重载的名称都是一模一样的,C++编译器就是通过重命名机制来区别这些同名函数的(不同的C++编译器,重命名机制可能不一样)。
//重命名机制
void Fun(int i, double j); //c++编译器把函数名Fun其实重命名为_Fun_int_double
void Fun(double i, int j); //c++编译器把函数名Fun其实重命名为_Fun_double_int
C++调用C 函数:C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
void Fun(int i, ini j); C 编译器编译后的名字为_Fun。
void Fun(int i, int j); C++编译器编译后的名字为_Fun_int_int。
C 编译器和C++编译器产生的名字不同,所以C++不能直接调用C 函数。用extern“C”解决。
extern "C"
{
//头文件
#include “header.h”
//函数
void Fun(int i, int j);
}
操作符重载:指用关键字operator加运算符表示的函数。可以把其理解为特殊形式的函数,运算符本身是函数名。
int Add(int i, int j); //普通函数
int operator+(int i, int j); //+运算符函数
//用法
int k = Add(, );
int m = + ;
操作符重载规则:

ps:后面讲到类时再结合例子讲解下操作符重载为成员函数。
【C++自我精讲】基础系列三 重载的更多相关文章
- 【C++自我精讲】基础系列二 const
[C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...
- 【C++自我精讲】基础系列一 指针与引用
[C++自我精讲]基础系列一 指针与引用 一 前言 指针.引用.指针与引用区别. 二 指针 变量:代码中常常通过定义变量来申请并命名存储空间,并通过变量的名字来使用这段存储空间. //变量 ...
- 【C++自我精讲】基础系列四 static
[C++自我精讲]基础系列四 static 0 前言 变量的存储类型:存储类型按变量的生存期划分,分动态存储方式和静态存储方式. 1)动态存储方式的变量,生存期为变量所在的作用域.即程序运行到此变量时 ...
- 【C++自我精讲】基础系列六 PIMPL模式
[C++自我精讲]基础系列六 PIMPL模式 0 前言 很实用的一种基础模式. 1 PIMPL解释 PIMPL(Private Implementation 或 Pointer to Implemen ...
- 【C++自我精讲】基础系列五 隐式转换和显示转换
[C++自我精讲]基础系列五 隐式转换和显示转换 0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐 ...
- java基础系列(三)---HashMap
java基础系列(三)---HashMap java基础系列 java基础系列(一)---String.StringBuffer.StringBuilder java基础系列(二)---Integer ...
- unity官方案例精讲(第三章)--星际航行游戏Space Shooter
案例中实现的功能包括: (1)键盘控制飞船的移动: (2)发射子弹射击目标 (3)随机生成大量障碍物 (4)计分 (5)实现游戏对象的生命周期管理 导入的工程包中,包含着一个完整的 _scene--- ...
- es6基础系列三:解构赋值
解构就是ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值(只能用于数组,对象或迭代器).如果解构不成功,则等于undefined,但不能赋值为undefined和null,因为undefi ...
- 夯实基础系列四:Linux 知识总结
前言 前三节内容传送门: 夯实基础系列一:Java 基础总结 夯实基础系列二:网络知识总结 夯实基础系列三:数据库知识总结 现在很多公司项目部署都使用的是 Linux 服务器,互联网公司更是如此.对于 ...
随机推荐
- Android 如何添加一个新的时区
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- Android性能优化的方方面面
通常项目比较大的APP都面临着如下性能问题,APP启动慢.界面跳转慢.事件相应慢.滑动和动画卡顿.展现内容慢等,有的公司处理的很好,有的还有很大的优化空间,对于性能优化,怎么去做,我总结了一下性能优化 ...
- 算法笔记_105:蓝桥杯练习 算法提高 上帝造题五分钟(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 第一分钟,上帝说:要有题.于是就有了L,Y,M,C 第二分钟,LYC说:要有向量.于是就有了长度为n写满随机整数的向量 第三分钟,YUHC ...
- linux 安装mysql 5.6.11
tar zxvf mysql-.tar.gz cd mysql- cmake . -DCMAKE_INSTALL_PREFIX=/home/mysql/ -DMYSQL_DATADIR=/home/m ...
- 基于redis的简易分布式爬虫框架
代码地址如下:http://www.demodashi.com/demo/13338.html 开发环境 Python 3.6 Requests Redis 3.2.100 Pycharm(非必需,但 ...
- 【小程序】微信小程序开发—弹出框
1. <span style="font-family:Comic Sans MS;font-size:18px;color:#333333;"><view cl ...
- Linux-进程基础
计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等.这些最基础的计算机动作被称为指令 (instruction).所谓的程序(program),就是这样一系列 ...
- 我眼中的PageRank算法详解
随着互联网的发展,网络上已有的网页数量庞大,并且每天都会有很多网页发布,如何权衡这些重要度的排名是一个很重要的问题.我们今天就来了解一下PageRank算法. 首先我们要来了解一下图的概念,请看图1. ...
- kettle--组件(3)--行转列
组件图如下: 以上操作可以这么理解: IF(DATA1=DATA4) THEN DATA2=DATA3 也就是关键字值的数值会与关键字段的数值匹配,匹配上了就显示数据value filedname所填 ...
- 从构建分布式秒杀系统聊聊验证码 给大家推荐8个SpringBoot精选项目
前言 为了拦截大部分请求,秒杀案例前端引入了验证码.淘宝上很多人吐槽,等输入完秒杀活动结束了,对,结束了...... 当然了,验证码的真正作用是,有效拦截刷单操作,让羊毛党空手而归. 验证码 那么到底 ...