1、重载函数

两个以上的函数取相同的函数名,但是函数形参的个数或者类型不同,编译器会根据实参与形参的类型和个数进行最佳匹配,自动确定调用哪一个函数。

example:

int   add(int x,int y);
float add(float x,float y);

注意事项:

  • 1)重载函数的形参不管是类型还是个数必须有一样是不同的。因为编译器就是看实参和哪个函数的形参的类型及个数匹配,来判断调用哪个函数,如果函数名、 形参类型和个数相同,即使函数返回值类型不同,编译器也会认为是函数重复定义的语法错误,就是说它认为是一个函数。以下两种是错误的重载函数:
int add(int x,int y);
int add(int a,int b); int add(int x,int y);
void add(int x,int y);
  • 2).重载函数都是进行类似的操作,不要把不同的功能定义成重载函数,否则会让人对调用有误解

2、函数模板

函数重载对于功能一致的函数,还是需要写多份代码。函数模板只需写一份代码,通用性更高。函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。

函数模板的声明形式:

template<typename 数据类型参数标识符>
<返回类型><函数名>(参数表)
{
函数体
}

其中,template是定义模板函数的关键字;

template后面的尖括号不能省略;

typename(或class)是声明数据类型参数标识符的关键字,用以说明它后面的标识符是数据类型标识符。

这样,在以后定义的这个函数中,凡希望根据实参数据类型来确定数据类型的变量,都可以用数据类型参数标识符来说明,从而使这个变量可以适应不同的数据类型。

C++ 重载函数与模板函数的更多相关文章

  1. C++普通函数与模板函数以及特化函数重载的优先级问题

    在面对C++模板的时候,需要十分注意,因为模板的复杂性有很多情况,所以最好学习模板的方法我个人认为就是用到就去学,用不到就尽量别去看各种奇门怪技,因为你就算看了,好不容易搞懂模板的实现内部了,包括元编 ...

  2. 从一个模板函数聊聊模板函数里面如何获得T的名字

    写了个小程序,遇到点问题.总结总结,学习学习 #include<vector> #include<iostream> #include<typeinfo> usin ...

  3. c/c++ 模板函数的重载

    模板函数的重载 普通函数可以重载,模板函数也可以重载,但规则复杂 有下面2个函数,名字相同,返回值相同就,参数不同,符合重载. template<typename T> std::stri ...

  4. 聊聊C++模板函数与非模板函数的重载

    前言 函数重载在C++中是一个很重要的特性.之所以有了它才有了操作符重载.iostream.函数子.函数适配器.智能指针等非常有用的东西. 平常在实际的应用中多半要么是模板函数与模板函数重载,或者是非 ...

  5. [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断

    参考:http://blog.csdn.net/beyondhaven/article/details/4204345 参考:http://blog.csdn.net/joeblackzqq/arti ...

  6. C++ template学习一(函数模板和模板函数)

    函数模板和模板函数(1)函数模板函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计.它的最大特点是把函数使用的数据类型作为参数.函数模板的声明形式为:templat ...

  7. c++ 多态,虚函数、重载函数、模版函数

    c++三大特性:封装.继承.多态.封装使代码模块化,继承扩展已存在的代码,多态的目的是为了接口重用 虚函数实现:虚函数表:指针放到虚函数表 多态:同名函数对应到不同的实现 构造父类指针指向子类的对象 ...

  8. [转]C++函数模板与模板函数

      1.函数模板的声明和模板函数的生成   1.1函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计.它的最大特点是把函数使用的数据类型作为参数. ...

  9. C++模板(函数模板 & 类模板)

    模板编程可称范型编程,是一种忽视数据类型的编程方式,这样的好处是什么?且看下面一个例子: 简单使用 求解最值问题,返回两个值中的较大值: int Max(int a, int b) { return ...

  10. C++类中的成员函数和构造函数为模板函数时的调用方法

    所谓模板函数其实就是建立一个通用函数,这个通用函数的形参类型不具体指定,用一个虚拟类型来代表,这个通用函数就被称为函数模板. 例: #include <iostream> using na ...

随机推荐

  1. 【语义分割专栏】:U-net实战篇(附上完整可运行的代码pytorch)

    目录 前言 U-net全流程代码 模型搭建(model) 数据处理(dataloader) 评价指标(metric) 训练流程(train) 模型测试(test) 效果图 结语 前言 U-net原理篇 ...

  2. linux 配置定时任务

    注意:定时任务执行默认路径,我们配置的命令如kubectl要配置绝对路径/usr/local/bin/kubectl,或者在脚本中全局定义PATH 配置说明 linux 配置定时任务的方式比较多,可以 ...

  3. kubernetes获取Pod内容器信息

    一.简单说明 在实际的业务需求中,我们可能需要在写yaml文件的时候,可以在Pod的container内获取Pod的spec,metadata等信息,包含:node的名称,pod的名称,pod的nam ...

  4. String在内存中如何分布

    一.设计思想及原理 设计思想 1.字符串分配和其他的对象分配一样,耗费高昂的时间与空间代价,作为最基础的数据类型,大量频繁的创建字符串,极大程度地影响程序的性能. 2.JVM为了提高性能和减少内存开销 ...

  5. C# 子类给父类构造函数传值

    BIG阳 通过BAse 来用,在子类中,你调用的类型要和父类的调用类型相同才行,不然会出错class A {public A(int a, int b) {}}class B : A {public ...

  6. 将本地的jar包加到maven中,pom添加依赖

    开发过程中经常遇到需要用某些http://maven.apache.org/中没有的jar包,这个时候可以用maven命令自己添加 通常这些jar包可以从其官网下载下来,然后用maven明天添加此ja ...

  7. 卸载vivo或iqoo或其它手机的预装软件

    前言 众说周知,现在安卓手机做的越来越闭源,(除了一加和小米以及红蓝厂的部分型号 大部分)根本无法root. 那就意味着 手机上一些预装的软件 根本无法卸载 比如:阅读.xx官网.自带的视频和音乐软件 ...

  8. 知道主机名称 如何知道ip地址

    举例 ping -4 raspberrypi 就可以知道 ip 地址了.

  9. SciTech-AV-Audio-Music-Theory: Dance + 身体使用 汇编 + 乐理及声乐感知 pitch +tempo + form + beat + timbre + percussive + rhythmic + harmonic + texture

    Dance + 身体使用 汇编 特别注意: 心神: 轻松.专注.聚精会神. 大脑: 珍惜爱护"脑力",不可"过度用脑"."德智体美劳"全面发 ...

  10. Linux下设置MySQL的环境变量:-九五小庞

    Linux下设置MySQL的环境变量: 在/etc/profile中添加: export PATH=$PATH:/usr/local/MySQL/bin 重新加载配置文件 source /etc/pr ...