effectiveC++(十一)(二)

2010-12-26 23:07:28 · 作者: · 浏览: 4218
说就是逐位拷贝。赋值的结果如下所示:

a:  data --------> "hello\0"
            /
b:  data --/       "world\0"

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

string a("hello");                 // 定义并构造 a

{                                  // 开一个新的生存空间
  string b("world");               // 定义并构造 b

  ...

  b = a;                           // 执行 operator=,
        &n