内联函数,引用变量,按引用传递参数,默认参数,函数重载,函数模板,函数模板具体化,decltype
来源:互联网 发布:区域生长算法原理 编辑:程序博客网 时间:2024/05/11 18:55
要想函数成为内联函数,必须在函数声明或者函数原型前加上inline, inline是建议,不是强制,编译环境会根据是否有必要来决定是否使用inline。inline即是把代码复制到调用点,这样就可以不用保护“现场”,适用于比较短的代码。
引用变量:int a, int &b=a则b是a的引用,a和b指向相同的值和内存单元。和指针的主要差别是必须在声明引用时将其初始化,而不能像指针那样,先声明,再赋值。将引用用作函数参数等效于按地址传递。
右值引用:右值引用可以引用表达式,常量;左值引用只能引用变量。如 void show(int &&n),show(5+3)。
默认参数:
int harpo(int n, int m = 4, int j = 5);//要从右向左添加默认值int beeps;beeps = harpo(2);//等价于harpo(2,4,5)beeps = harpo(1, 8);//等价于harpo(1,8,5)beeps = harpo(8, 7, 6);//未使用默认值beeps = harpo(3, ,4);//错误,不能跳过任何参数
函数重载:函数的特征标与参数的数目,类型,排列顺序有关。若函数名相同而特征标不同即为函数的重载,例如:void print(int a, int b);void print(int a, double b);
不同返回值但函数名和特征标相同的函数是互斥的。函数模板:
#include<iostream>using namespace std;template<typename google>void swop(google &a, google &b){google temp;temp = a;a = b;b = temp;}int main(){int a, b;double c, d;swop(a, b);//google被自动替换成intswop(c, d);//google被自动替换成double}
template<typename t1,typenamet2>也是可以的。
重载的函数模板:
template<typename google>void swop(google a, google b);template<typename google>void swop(google a, google b, google c);
显式具体化:
#include<iostream>using namespace std;struct job{char name[40];double salary;int floor;};template<typename T>//函数模板void swop(T&, T&);template<>void swop<job>(job&, job&);//显式具体化int main(){double u, v;swop(u, v);//调用模板job a, b;swop(a, b);//调用显式具体化}
如果有多个原型,编译器在选择原型时,非模板版本优先于显式具体化,显式具体化优先于模板(更具体的函数优先原则)。显式具体化的格式也可以为template<>void swop(job&,job&)。显式实例化:格式为template void swop<int>(int,int);编译器看到上述声明后,将调用swop模板生成一个int类型的实例,即使用swop模板生成int类型的函数定义。具体化和实例化的不同点是:具体化是自己写的函数定义,实例化是编译器根据函数模板生成的函数定义。
decltype:decltype(x)y, 使y和x的类型相同。例如decltype(x+y)xpy=x+y,在不确定x和y类型时使用。
后置返回类型:当返回值由传入参数决定时使用
template<typename t1,typename t2>auto gt(t1 x, t2 y)->decltype(x + y){return x + y;}
0 0
- 内联函数,引用变量,按引用传递参数,默认参数,函数重载,函数模板,函数模板具体化,decltype
- C++学习笔记(四)--内联函数,引用参数,默认参数,函数重载,函数模板
- C++ primer(八)--内联函数 引用变量 函数重载/模板/模板具体化
- C++函数其他(重载、默认参数、内联、函数模板)
- c++函数功能 引用 & 重载 & 默认参数 & 内联
- 函数模板,函数模板重载,可变参数模板,函数模板覆盖,通过引用交换数据
- 重载函数,默认参数,函数模板
- C++学习之内联函数、引用变量、函数重载、函数模板
- C++中的引用变量、默认参数和函数重载
- 内联函数,重载函数,默认参数
- C++函数默认参数, 函数重载, 函数模板
- 函数:显式具体化模板函数 引用结构
- 【笔记】C++函数内联、模板、重载,以及引用
- 函数模板中的参数引用问题
- 函数模板、模板重载、函数模板显示具体化(explicit specialization)
- 模板函数,模板函数重载,显示具体化模板,实例化
- 引用与函数默认参数
- python函数参数引用传递
- Python学习---第2天---数据切片
- OpenResty代理CNZZ实现内网访问统计
- 升级cocoapods
- 19.集合类总概
- SpringMVC集成Hibernate Validator进行注解式的参数校验——让代码更少、更加专注于业务逻辑
- 内联函数,引用变量,按引用传递参数,默认参数,函数重载,函数模板,函数模板具体化,decltype
- Html5文件读取
- 自定义tabBar
- Jquery——Day4(Ajax进阶:加载请求、错误请求、请求全局事件、json/jsonp)
- mac终端下svn常用命令
- 样式化加载失败的图片
- 面对对象-继承、代码块、API(Math类)
- 遍历字典
- 从网上盗的 javascript运算符的优先级