C++教学总结

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值