《C++Primer Plus》学习笔记(七)

本文深入探讨C++中的内联函数、引用变量等特性。详细解释了内联函数的工作原理及其实现方法,以及引用变量与指针的区别。此外,还讨论了函数重载和默认参数的使用。

1、C++内联函数

1、C++内联函数的编译代码与其他程序代码“内联”起来了。也就是说,编译器将使用相应的函数代码替换函数调用。对于内联函数,程序无需跳到另一个位置处执行代码,然后再跳回来。因此,函数的运行速度比常规函数稍快,但代价是需要更多的内存。如果函数在10个不同的地方调用同一个内联函数,则该程序将包含该函数10个代码拷贝。

2、操作如下:

1、函数声明前加上inline;

2、函数定义前加上inline;

3、通常的做法是省略原型,将整个定义(即函数头和所有函数代码)放在本应提供原型的地方。(编译器不一定满足请求)。

内联函数不能递归。

4、inlinedoublesquare(doublex){returnx*x; }函数不应过大


2、引用变量

1、intrats; int&rodents=rats;

上述引用声明允许rats与rodents互换,它们指向相同的值和内存单元

2、引用于指针的区别。

1、声明引用时进行初始化。Int&robent; robent=rat; //wrong

2、不能改变引用对象,否则原来的对象也会被更改。

Intrats=100;

Intbunies=50;

Int&robent=rats;

robent=bunies; ------------robent=rats=50;//rats也变

3、如果实参与引用参数不匹配,C++将生成临时变量。仅当参数为const引用时,C++才允许这样做。

Doublerefcube(constdouble&ra); 一下情况将生成临时变量:

1、Longedge; Doublec1=refcube(edge);//类型不对

2、Doublec2=refcube(7.0);//类型对,但没有名称,下例也是

3、doubelside=10.0; Doublec3=refcube(side+10.0);

这些情况下,编译器将生成一个临时匿名变量,并让ra指向它,这些临时变量,只在函数调用期间存在,此后编译器可以随意的删除。

3、将引用用于结构

避免返回当函数终止时不在存在的内存单元引用(如函数中定义的结构体)。解决方法有:

1、返回一个作为参数传递给函数的引用。

2、使用new分配内存。


3、默认参数

默认参数值的是当函数调用中省略了实参时自动使用的一个值。

对于带参数列表的函数,必须从右向左添加默认值,实参按从左到右赋值。


4、函数重载

函数重载的关键是函数的参数列表——也称为函数特征标。 而不是取决于函数类型。

C++如何跟踪每一个重载函数呢?

答:使用C++开发工具中的编译器编写和编译函数时,C++编译器将执行一些神奇的操作——名称修饰或名称矫正,它根据函数原型中指定的形参类型对每个函数名进行加密。



——————————2012年7月14日20:36:54
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值