当前位置:首页 » 多媒体相关

被拷贝构造函数摆了一道


class   a   {  
  public  
      ~a()   {  
          //delete   something  
      }  
      foo();  
      ...  
  }  
   
  class   b   {  
      char*   p;  
  public  
      ~b()   {  
          //delete   something  
      }  
      foo();  
      ...  
  }  
   
  结果写了一个表达式  
  (boolvar   ?   obja   :   objb).foo()  
  然后调试的时候老出错,分析发现,这个地方用默认拷贝构造函数生成了一个obja或objb的副本,副本析构的时候把本不应该delete的东西给delete了。  
   
  教训:不用拷贝构造函数的时候,尽量将之用private屏蔽,同样的还有operator=

.

推荐阅读

  • 背光模块厂商转与原材料厂争夺市场 应对降价 [详细内容]
  • 影片转换为MP4的方法 [详细内容]
  • 运营商国际化战略十年也难成气候 [详细内容]
  • 微软将从下周三开始首次对测试版Office收费 [详细内容]
  • 本土企业图谋反攻 进手机照相模块供应行列 [详细内容]
  • 网络经商新时代 个人网店玩转C2C [详细内容]
  • 文化部数字娱乐座谈会 庹祖海点“盛大盒子” [详细内容]
  • 网友回答:

    讨论区

    Login