More Effiective C++学习笔记

来源:互联网 发布:程序员考在职研究生 编辑:程序博客网 时间:2024/06/05 14:20

基础:

1、类型转换可能发生的情况:
    单自变量构造函数;
    隐式转换操作符;

2、前置、后置类型操作符:
    区别:后置类型操作符会产生临时对象以表示操作之前的值,前置直接返回原对象。
    重载:重载后置类型操作符需要加一个无用的形参以区别前置类型操作符(int)。

3、编译器隐式类型转换以匹配函数形参和返回值一般只进行一次,不会对一个值进行多次转换

4、真假表达式:骤死式,从左向右遇到false即停止
    重载&&、||、, 是危险的,因为重载函数不会符合骤死式的行为模式。

5、new操作符、new operator和placement new

异常:

1、异常应该按引用传值

2、完成构造的对象才会被析构
     构造函数内异常与析构函数异常。

效率:

1、临时对象的来源:
    隐式类型转换;
   函数返回对象时;

2、返回值优化:

3、x+=y 与 x= x+y的区别:x+y要多产生一个临时对象

4、RTTI的代价以及实现方法:
    代价:遍历虚函数表
    实现方法:在虚函数表内设置指向类的typeinfo的指针

技术:

1、限制构造函数的作用:
    限制对象的产生;
    限制类被派生;

2、限制析构函数的作用:
    限制栈对象产生
3、私有化operator new
限制堆对象产生
3、将构造函数和非成员函数虚化
所谓虚化就是根据不同上下文产生出派生体系中不同的对象
4、尽量不要提供隐式转换操作符

5、代理类
例如使用代理类区分operator []是读还是写
6、如何自行构建虚函数表以实现特殊虚函数功能
例如:根据一个以上对象类型决定调用那个虚函数

杂项:

1、将非尾端类设计为抽象类

2、c++与c的结合

函数声明 extern "C"

内存分配 内存分配函数不能混用

数据结构兼容 不使用虚函数,struct以及内建类型都能兼容

c++全局对象和静态对象 main函数应尽量写到c++的代码里,因为它会附带有初始化全局和静态变量的功能

0 0
原创粉丝点击