c++学习记录

1. 内联函数

内联函数的编译代码与其他程序代码“内联”起来了。编译器将使用相应的函数代码替换调用。由于内联函数无需跳到另一个位置处执行代码,因此其运行速度比调用常规函数稍快,但是代价是需要占用更多的内存.

程序员请求将函数作为内联函数时,编译器不一定满足这种要求。

例:

inline square(int x){return x*x;}

2.引用变量

&符号来指示变量的地址,声明引用变量

例如要将rodents作为rats的别名,有以下

int rats;
int &rodents=rats;

2-1 将引用作函数参数

引用常常被用作函数参数,使得函数中的变量名成为调用程序中变量的别名。

按引用传递允许被调用的函数能够访问调用函数的变量。

void swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}

2-2 临时变量、引用参数和const

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

编译器在以下两种情况生成临时变量

  • 实参类型正确但不是左值
  • 实参类型不正确,但能转换成正确的类型

3.默认参数

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

例如,如果将

void wow(int n)

设置成n有默认值为1,则调用函数wow()相当于wow(1),这极大的提高了使用函数的灵活性。

例如函数调用left(“theory”,3),将创建新字符串“the”,并返回一个指向该字符串的指针。现在默认第二个参数设置为1,如何设置默认值,如下:

char * left(const char * str,int n=1);

4.函数重载

函数多态是c++在c语言基础上新增的功能

函数重载的关键是函数的参数列表——函数特征标志

如果两个函数的参数数目和类型相同,同时参数的排序也相同,则它们的特征标相同,而变量名是无关紧要的。

void print(const char * str,int width);
void print(double d,int width);
void print(long l,int width);
void print(int i,int width);
void print(const char *str);

使用print()函数时,编译器将根据所采用的用法使用相应特征标的原型

print("pancakes",15);
print("syurp");
print(2999.0,10);
print(1999,12);
print(1999L,15);

5.函数模板

函数模板是通用的函数描述,也就是说泛型来定义函数,其中的泛型可用具体类型替换。通过将类型作为参数传递给模板,可使编译器生成类型的函数。例如

template <typename anytype> //建立模板,类型命名为anytype
void swap(anytype &a,anytype &b)
{
    anytype temp=a;
    a=b;
    b=temp;
}

在c++ 98添加关键字typename 之前,c++使用关键字class来创建模板。

template <class anytype>
void swap(anytype &a,anytype &b)
{
    anytype temp=a;
    a=b;
    b=temp;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值