C++ Primer Plus 笔记06

C++ Primer Plus 笔记06

格式化设置

1.方法setf()能设置各种格式化状态。

调用setf(ios_base::fixed)将对象至于使用定点表示法的模式;
调用setf(ios_base::showpoint)将对象至于显示小数点的模式,即使小数部分为零。

2.方法precision()能指定显示多少位小数(假定对象处于定点模式下)。

以上的设置都将一直保持不变,直到再次调用相应的方法重新设定他们。

3.方法width()设置下一次输入操作使用的字段宽度,这种设置只在显示下一个值时有效,然后恢复默认状态。

例:

ios_base::fmtflags initial;
inital = os.setf(ios_base::fixed);  //os为一个ostream类的对象
...
os.setf(initial);

在os对象下调用setf()方法,返回调用它之前有效的所有格式化设置。
ios_base::fmtflags是存储这种信息所需的数据类型名称。因此将返回值赋给initial就是赋值给initial调用之前的所有格式化设置。
然后initial作为参量来调用setf(),将所有格式化设置恢复到原来的值。

何时使用引用参量

1.能修改调用函数中的数据对象
2.数据类型比较大时,如类和结构,提升效率。

什么时候用引用,什么时候用指针,什么时候用按值传递

1.数据对象很小时,按值传递
2.数据对象是数组时,只能使用指针。(不想修改数据则为const *)
3.数据对象较大时,使用指针或引用。(不想修改数据则为const *)
4.数据对象是类时,使用引用。(不想修改数据则为const *)

默认参数

指的是当函数调用中省略了实参时自动使用的一个值。
例,将void wow (int n)设置成n有默认值为1,则调用wow()相当于调用wow(1).

通过函数原型设置

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

而函数实现保持正常设置:

char * left(const char * str,int n = 1)
{
   ...
}

如果有值则会覆盖默认值,如果没有则为1.

注意事项:
在参数列表里面,只能从左向右添加默认值,也就是说,如果要设置默认值,不管有几个,都要全部放在右边。如:

int harpo(int n, int m = 4, int j = 5);    //可行
int chico(int n, int m = 6, int j);        //不可行

函数重载

默认参数能让你是哟个不同数目的参数第哦啊用同一个函数,而函数重载能让你使用多个同名的函数。
重载的关键是函数的参数列表–特征标。如果两个函数的参数数目和类型相同,同时参数排列顺序也相同,则特征标相同。返回类型不算特征标,可以相同,也可以不同。
若特征标不同则可如下定义函数:

void print(const char * str, int width);  //#1
void print(double d, int width);          //#2
void print(long l, int width);            //#3
void print(int i, int width);             //#4
void print(const char * str);             //#5

使用时编译器会根据用法使用有相应特征标的原型:

print("hello",15);    //use #1
print("hello");       //use #5
print(1999.0,15);     //use #2
print(1999,15);       //use #4
print(1999L,15);      //use #3

若出现:

unsigned int year = 3210;
print(year, 6);

此时print()函数不与任何一个原型匹配,但他会去找函数强制类型转换,如找#2。如果只有#2函数被定义了,会将year转换为double类型。但上面有3个数字作为第一个参数的原型,编译器就会报错。

注意以下的两个原型:

double cube(double x);
double cube(double & x);

虽然看起来特征标不相同,但是不能共存的,如cout<< cube(x);参数x与两个原型都匹配。
所以类型引用与类型本身视为同一特征标。
还需注意的一点,在匹配函数时并不区分const和非const变量。
const为形参的函数可以和const或非const实参匹配
非const为形参的函数只可以和非const实参匹配

何时使用函数重载

仅当函数执行相同的任务,但使用不同形式的数据时,才应采用函数重载。

什么是名称修饰

他根据函数原型中指定的形参类型对每个函数名进行加密,将名称转换为接口代码,方便计算机识别调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值