1.a=5<<2则a=20 意思是左移两位,乘4
2.利用对象调用虚函数不会体现真正的多态性,只有用基类指针或引用指向派生类对象才可以。
基类中,一旦某一个成员方法被定义为虚函数,同时,如果派生类中重载了这个函数,那么再通过派生类对象进行调用时,调用的是派生类中的成员函数,而不是基类中的成员函数。
3.①break语句可以用于循环语句中,终止当前循环;也用于在switch语句中结束一个case。
②continue语句只能用于循环语句。
③无条件跳转语句有break,continue,return,goto
④在switch语句中,continue用来使执行流程跳出switch语句。
在循环语句中,break用来使执行流无条件跳出本层循环体。
continue的功能是结束本次循环,接着进行下一次是否执行循环的条件判定。
break和continue语句跳转范围明确。
4.可以用派生类对象初始化基类对象或指针
①把派生类对象赋值给基类对象
②把派生类对象的地址赋值给基类指针
③用派生类对象初始化基类对象的引用
派生类对象只有在基类成员未被派生类覆盖的情况下才能访问基类中的成员。
5.浮点类型不能精确相等
6.
7.①一个traits包括了enum、typedef、模板偏特化(template partial specialization)
②typedef定义了各个类的各自不同的类型定义
③模板偏特化用于实现各个类的不同功能
④当函数,类或者一些封装的通用算法中的某些部分会因为数据类型不同而导致处理或逻辑不同,traits会是一种很好的解决方案。