effective c++总结

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指针传递的。私有函数外部调用在编译阶段就会被阻止调用,当然如果你能知道私有函数的地址,还是能直接调用他的。不过编译器让不让你调就是问题了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值