【学习笔记】C++primer plus 8.函数探幽

1. 返回const引用的函数为右值,可以防止func() = 1这样的操作;

2. 有关函数重载的一个知识点

void func(double *a); // 唯一原型
float p = 1.0;
func(p) // 可以匹配
 
void func(double *a);
void func(int *a);
func(p) // 不能匹配

3. 原型和原型的引用视为同一特征标;原型和const原型视为不同特征标;

4. 返回类型不同时特征标也应当不同;

5. 使用模板定义的函数在最终的程序中会根据实际的调用情况再生成一个新的函数,类似于又手工定义了一遍;(实例化)

6. 有关具体化

template<class T>
void func(T a);
 
template<> voidfunc<SomeType1>(SomeType1 a) // 显式具体化,不使用模板,定义新的函数
int main(void) {
   template void func<SomeType2>(SomeType2 a); // 显式实例化,利用模板创建了SomeType版本的实例
   SomeType2 a;
   func<SomeType2>(a); // 显式实例化 
   func(a); // 隐式实例化}

7. decltype(func()) z 不会调用func函数

   decltype((xx)) z 定义为指向xx类型的引用

   decltype(x+y) z 定义z为x+y的类型

   decltype(expression) 内部是一个表达式

8. 后置返回类型 autofunc(T1 x, T2 y) -> decltype(T1, T2)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值