<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

  • 随笔 - 13
  • 文章 - 0
  • 评论 - 2
  • 引用 - 0

常用链接

留言簿

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

复制构造函数(拷贝构造函数)
复制构造函数发生时间
1.类作为函数参数
2.函数返回值
3.对已经定义的对象进行赋值操作

复制构造函数做了什么
1.内置类型,直接赋值(指针除外,以下有特殊说明)
2.类类型,调用该类的复制构造函数
3.指针类型,只赋值指针中的地址,不赋值指针指向的对象,即所谓的浅拷贝,我们实际上需要的是深拷贝(这是一般要重写复制构造函数的主要原因,我认为是唯一原因)

一些技巧
1.要禁止赋值,显式的把赋值构造函数声明为private,同时不定义即可
2.复制构造函数最困难的部分在于认识到他的必要性


示例,string的拷贝构造函数
  String::String(const String &other)

    {  

   // 允许操作other的私有成员m_data

    int length = strlen(other.m_data);  

    m_data = new char[length+1];

    strcpy(m_data, other.m_data);

   }

个人建议,看看《高质量C++编程》相关部分,收获颇丰。

posted on 2010-11-15 20:51 @Koven.Z 阅读(356) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理