C++ Primer Plus第八天

本文介绍了C++中的内联函数,强调了其与C语言宏的区别。接着讲解了引用变量的使用规则,特别是与指针的区别。此外,讨论了何时选择引用、指针或按值传递数据。还涉及了默认参数的设定,函数重载的原理以及右值引用这一新特性。最后,详细阐述了函数模板的概念及其在代码复用中的作用,包括显示实例化和具体实例化的用法。
摘要由CSDN通过智能技术生成

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)
	{
		...
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值