effective c++总结

来源:互联网 发布:铸铁锅粗糙知乎 编辑:程序博客网 时间:2024/05/05 09:43
1. define函数容易出现不易控制的错误
2. new和delete使用的时候比malloc和free多调用了析构和构造函数
3. set_new_handler可以处理内存不足的情况
4. 可以使用void* __cdecl opterator new(size_t size, ___FILE__, ___LINE__)重载new函数,或者使用类void* operator new(size_t,  new_handler p)重载类new函数。size的大小是由c++编译器计算得出的。new_handler p可以省略,但是会隐藏new的标准访问。
类new函数被重载后需要返回p指针作为类的内存空间(类的内存空间布局参见深入理解c++对象模型),如果p指针不为空则调用构造函数。这里的指针没有合法性检查。

5. 使用构造函数初始化在构造函数传递非引用类时能够节省非引用类的复制开销

6. 私有继承时编译器不会将子类指针转化为基类指针使用。

7. 就算在构造函数内部显示调用了基类的构造函数,基类构造函数还是在子类构造函数之前用这段代码执行,也就是说调用基类构造函数的代码比他之前的代码更早执行。

8. 对于类的调用,实际上编译器把class::fun(x)优化成了class_fun(this,  x),类的成员函数被提取到专门的代码段,而访问类的数据则是通过this指针传递的。私有函数外部调用在编译阶段就会被阻止调用,当然如果你能知道私有函数的地址,还是能直接调用他的。不过编译器让不让你调就是问题了。。