Effective.C++学习(学习中)

原创 2011年01月18日 00:00:00


基础:

1、尽量使用const、inline而不使用#define.

尽量的把任务交给编译器去做。


2、尽量用<iostream>而不用<stdio.h>


3、尽量用new/delete而不用malloc/free


4、尽量使用C++风格的注释

 

内存管理:

内存管理:

1、对应的new和delete要采用相同的形式

用new的时候会发生两件事:

首先,内存被分配

然后,为被分配的内存调用一个或多个构造函数

2、析构函数里对指针成员调用delete

3、预先准备好内存不够的情况

assert这个宏检查传给它的表达式是否非零,如果不是非零值,就会发出一条出错信息并调用abort。assert只是在没定义标准宏ndebug的时候,即在调试状态下才这么做。

4、写operator new和operator delete时要遵循常规

很重要的一点是函数提供的行为要和系统缺省的operator new一致。实际做起来也就是:要有正确的返回值;可用内存不够时要调用出错处理函数(见条款7);处理好0字节内存请求的情况

5、避免隐藏标准形式的new

因为内部范围声明的名称会隐藏掉外部范围的相同的名称,所以对于分别在类的内部和全局声明的两个相同名字的函数f来说,类的成员函数会隐藏掉全局函数

一种方法是在类里写一个支持标准new调用方式的operator new

另一种方法是为每一个增加到operator new的参数提供缺省值

6、如果写了operator new就要同时写operator delete

 

待续......

 

相关文章推荐

Effective C++学习总结

  • 2013年09月04日 22:59
  • 42KB
  • 下载

Effective C++学习笔记

  • 2011年09月20日 11:01
  • 21KB
  • 下载

Effective C++学习笔记之“尽量使用初始化而不要在构造函数里赋值”

   在对类成员变量初始化的时候,我们很多时候没有注意到,在类构造函数的初始化列表中初始化成员变量,和在构造函数中赋值初始化成员变量的差别是很大的,不仅表现在程序的执行效率上,同时还有语法上的区别。类...

Effective_C++2e (c++学习教程)

  • 2010年02月07日 08:39
  • 397KB
  • 下载

Effective c++学习笔记——条款11:在operateor=中自我赋值

Handle assignment to self in operator=            本条款的核心是关于c++对象的自我赋值,既然说是自我赋值,那么就会产生一些你意想不到的问题。首先看...

Effective C++学习笔记之第四章(4)

chapter 4 设计与声明 item23 :宁以non-member、non-friend函数替换member函数 1)假设这里有一个关于web浏览器的一个类,它有一系列的清楚操作,最后需要写...

Effective C++学习笔记一

Effective C++学习笔记一 条款01:视C++为一个语言联邦 Ø C Ø Object-Oriented C++ Ø Template C++//泛型编程部分(generic program...

Effective C++学习笔记 第一弹 1-4

条款1 尽量以const和inline取代#define 1、当这么做时 #define PI 3.1415 PI 在编译之前会被预处理器移走,而并没有进去符号表,当调试时,你能看到3.1415,...

Effective C++学习笔记 第五弹 29-34

条款29:避免传回内部数据的handles  程序1: class String{ public:      String(const char* value);m      ~String...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Effective.C++学习(学习中)
举报原因:
原因补充:

(最多只允许输入30个字)