c++ 读书笔记(四)

引用

将引用 参数声明为常量数据的引用的理由有三个:

  1. 使用const可以避免无意中修改数据的编程错误;
  2. 使用const使函数能够处理const和非const实参,否则将只能接受非const数据;
  3. 使用const引用使函数能够正确生成并使用临时变量;
临时变量是指:
double refcube(const double &ra)
{
return ra*ra*ra;
}
long edge=5L;
double size=3.0;
double c1=refcube(edge);	//edge的类型不是double,编译器会生成一个临时匿名变量,并让ra指向他。
double c2=refcube(size+7.0);	//size+7.0 虽然类型正确,但是没有名字,编译器也会生成一个临时变量;

这些临时变量只在函数调用期间存在,

参数传递

对于传递值而不修改函数:

数据对象参数传递的类型
数据对象小,如内置数据类型值传递
数组指针,并声明为const
较大的结构使用const或const引用
类对象const引用

对于修改调用函数中数据的函数:

数据对象参数传递的类型
内置数据类型指针
数组指针
类对象引用

默认参数

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

函数重载

在函数执行相同的任务,但使用不同形式的数据才采用函数重载;
函数重载的关键在于函数的参数列表,也称为函数特征标。与函数的返回类型无关;
c++允许定义相同的函数,条件是他们的特征标不同。如果参数数目或参数类型,排列顺序不同,则特征标也不同。

函数模板

如果需要多个将同一种算法用于不同类型的函数,就使用模板
关键字为template ,typename/class[在c++98之前,使用class来创建模板]

示例:
template <typename anyType>
void swap(anyType &a,anyType &b)
{
	anyType temp;
	temp=&a;
	a=b;
	b=temp;
}

重载的模板

模板可以像函数一样重载,并非所有的模板参数都必须是模板参数类型

template <typename anyType>
void swap(anyType &a,anyType &b);

template <typename anyType>
void swap(anyType *a,anyType *b,int n);

链接性

  1. 外部链接性 :可在其他文件中访问
  2. 内部链接性 : 只能在当前文件中访问 (静态全局变量)
  3. 无链接性 :只能在当前函数或代码块中访问

5中变量存储方式

存储描述持续性作用域链接性如何声明
自动自动代码块在代码块中
寄存器自动代码块代码块中,使用关键字register
静态,无链接性静态代码块在代码块中,使用关键字static
静态,外部链接性静态文件外部不在任何函数内
静态,内部链接性静态文件内部不在任何函数内,使用关键字static

静态变量 默认初始化为0

  1. volatile
    表明程序代码没有对内存单元进行修改,其值也可能发生变化。
    该关键字的作用是为了改善编译器的优化能力。
  2. mutable
    指出即使结构或类变量为const,某个成员也可以被修改

Const成员函数

将const关键字放在函数括号的后面

void show () const;

void stock::show() const;

this指针

this指针指向用来调用成员函数的对象
每个成员函数(包括构造函数与析构函数)都有一个this指针,this指针指向调用对象。如果需要引用整个调用对象,可以使用表达式*this。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值