Effective C++瞧瞧

Effective C++瞧瞧

条款1尽量用const和inline而不用#define
        注意情况:定义指针常量时,因为常量定义一般是放在头文件中,除了指针所指的类型要定  义成const外,重要的是指针也经常要定义成const。

     const char * const authorName = "Scott Meyers";
另外,定义某个类(class)的常量时,
为了保证常量最多只有一份拷贝,还要把它定义为静态成员。
条款3:尽量用new和delete而不用malloc和free
malloc和free不知道构造函数和析构函数。在free数组时没有调用析构函数的功能。
条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符

看下面一个表示string对象的类:

// 一个很简单的string类
class string {
public:
  string(const char *value);
  ~string();

  ...                           // 没有拷贝构造函数和operator=

private:
  char *data;
};

如果这样定义两个对象:

string a("hello");
string b("world");

b = a;

这种情况下至少有两个问题。第一,b曾指向的内存永远不会被删除,因而会永远丢失。这是产生内存泄漏的典型例子。第二,现在a和b包含的指针指向同一个字符串,那么只要其中一个离开了它的生存空间,其析构函数就会删除掉另一个指针还指向的那块内存。


你可能感兴趣的:(Effective C++瞧瞧)