C++内联函数
在函数定义、声明前加inline关键字
c语言中的 #define SQ(X) ((x)*(x))有缺陷,不能按值传递
引用变量
int &p = a;
注意:
声明时就要初始化;
与指针不同
int add (int &a);//会改变传入的值
返回引用:
int & number(int &a)
{
...
return a;//不能返回临时变量的引用
}
此时就可以:
number(b) = 10;
**如果不想这么做;就要:const int & number(int &a);
什么时候使用引用、指针、按值
数据小就考虑按值
数组用指针
数据大:const指针或const引用
数据是类对象,用引用
右值引用:&& 新特性
默认参数
int myprint(string str,string str2 {"hello"});
**从右至左做默认参数
函数重载
void print(const char *str,int width);
void print(double d,int width);
...
无法重载仅返回值类型的区分
名称修饰。。。
函数摸板
template<typename AnyType>
void Swap(AnyType &a,AnyType &b)
{...}
**优先顺序:非模板优先显示具体化,显示具体化优先模板
显示实例化:
template<> void pp<int>(int &,int &);
具体实例化
template<> void pp(int &,int &);
也可以自定义选择:
pp<>(x,y);
pp<int>(x,y);
返回类型后置:C++11新特性
template <typename T1,typename T2>
auto gt(T1 x, T2 y) -> decltype(x+y)
{
...
}