博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++教学总结
阅读量:4145 次
发布时间:2019-05-25

本文共 1216 字,大约阅读时间需要 4 分钟。

容易忽视的地方记录如下:

1.流提取操作符>>与scanf函数并不等价,当遇到字符变量时它会忽略“空白字符”, 即空格、TAB键和回车键。此时可以使用get操作函数。getline函数与gets相似。ignore函数用于忽略n个字符。当使用函数成员实现格式化时,如cout.width(5),效果虽与格式控制符setw(5)相同,但它会将上述设定保持到重新设定或程序结束。endl与\n不完全相同。可通过cout<<setw(5)<<'\n'<<setw(5)<<endl;证明。

2.使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。

  如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
  如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
关于setprecision的一个重要原则为:有效位不足时其不会补0,同样小数点后0不会显示。这是其与C语言中相关设置的本质区别。printf("%f", 52.3);输出为52.300000,而cout<<52.3;的输出为52.3。(虽然默认数字个数为6,但小数点后面的0自动省略!!)

3.对象产生时必然会有构造函数执行。拷贝构造函数的参数一定是一个引用。如果它的形参不是引用,而是一个普通的局部对象,当将对象传递给拷贝构造时,又将调用拷贝构造函数自身。这个过程将一起进行下去。拷贝构造函数执行的时机,(1)用对象初始化另一个对象(2)用实参初始化形参(3)函数返回一个对象时。return string(s1+s2);的效率要高于string temp(s1+s2); return temp;。

4.operator=重载时的原则。(1)检查是否为自赋值(2)释放原空间(3)申请新空间(4)赋值操作。后置用哑元区分。operator++(int)。友元多用于重载流插入流提取。注在VC6.0中,相关的重载函数必须要类声明中定义才会正确运行。

5.基数的构造函数必须在初始化列表中调用才会正确执行。(在子类的构造函数中调用基数的构造函数时不会用子类对象地址为this指针赋值,以免与包含的对象成员相冲突)const成员必须在初始化列表中初始化。对象成员在初始化列表中初始化,效率要高,但在构造函数中时会使用赋值操作符。

6重定义(redefine):派生类对基类的成员函数重新定义,即派生类定义了某个函数,该函数的名字与基类中的函数名字一样。可能是重载也可能是覆盖,但无论何种情况,在派生类中,基类中该名字的函数(即其他所有重载版本)都被自动隐藏,包括同名的虚函数。

转载地址:http://eddti.baihongyu.com/

你可能感兴趣的文章
关于linux栈的一个深层次的问题
查看>>
rootkit related
查看>>
配置文件的重要性------轻化操作
查看>>
又是缓存惹的祸!!!
查看>>
为什么要实现程序指令和程序数据的分离?
查看>>
我对C++ string和length方法的一个长期误解------从protobuf序列化说起(没处理好会引起数据丢失、反序列化失败哦!)
查看>>
一起来看看protobuf中容易引起bug的一个细节
查看>>
无protobuf协议情况下的反序列化------貌似无解, 其实有解!
查看>>
make -n(仅列出命令, 但不会执行)用于调试makefile
查看>>
makefile中“-“符号的使用
查看>>
go语言如何从终端逐行读取数据?------用bufio包
查看>>
go的值类型和引用类型------重要的概念
查看>>
求二叉树中结点的最大值(所有结点的值都是正整数)
查看>>
用go的flag包来解析命令行参数
查看>>
来玩下go的http get
查看>>
感受一下go协程goroutine------协程在手,说go就go
查看>>
队列和栈的本质区别
查看>>
matlab中inline的用法
查看>>
如何用matlab求函数的最值?
查看>>
Git从入门到放弃
查看>>