class MyClass
{
public:
MyClass () : m_p (new int (5)) {}
~MyClass () {delete m_p;}
int* m_p;
};
MyClass a;
MyClass b;
memcpy (&a, &b, sizeof (a));
Run Code Online (Sandbox Code Playgroud)
我只是通过重写它的成员变量而不先释放它来泄漏 'a' 中分配的 int。现在 'a' 和 'b' 有一个指向同一个内存位置的 m_p,两者都将在销毁时删除该地址。第二次尝试删除该内存将崩溃。
两者是相同的,因此如果所有子对象都是普通可复制的,则整个对象也是普通可复制的。(类(子)对象也不得具有虚拟成员函数或虚拟基类。)
| 归档时间: |
|
| 查看次数: |
5047 次 |
| 最近记录: |