C++中的复制构造函数

          复制构造函数,这个名字一听起来就让人有点不寒而粟。从国外书上翻译的东西总是那么让人难以理解,什么对象,实体,听起来着实专业,,,,,,,,,,,,,,

          要说复制构造函数,这个东西又是C++中的一个难点,至少很多人是这么说的,却实有这么一点。许多C++的书上也是这么说的。我看的那本《c++ primer plus〉中更是对这种函数大加渲染,让读者如 坠云雾,不过由于C++的复杂性,细节性,这种函数着实在好好研究一下。

        我觉得重点一是:复制;二是:构造。

        在程序中初使化对象时,要调用复制构造函数,一种情况是直接用它构造对象,另一种情况是先用它来构造一具临时对象,再调用赋值操作符。这就要取决于编绎器了。说 白了,自制构造函数和一般的构造函数一样都是用来创建对象的,只 不过其用于对象的初 使化对象中的。

       其实注意复制构造函数的情况是,类的私有数据成员包含指针的情况,这个指针指向内存中的数据。我们知道在没有在程序中没有显示的定义复制构造函数,程序在初使化对象时将隐式的调用复制构造函数,这个函数只是简单的完成对象成员之间的赋值,即“浅复制”,无法复制指针所指 向的内存数据,这样被初使化的对象中的成员指针就和原对象中的指针指向同一块内存地址,这样的后果不用说也知道麻烦大了。

      显示的复制构造函数就是为是解决这个问题的,其完成“深度自制”,即保证被初使化的对象的成员指针的指向一块独立的内存数据幅本。通过构造这种函数就可以解决这种问题。

     归根到底,还是一个指针的问题。指针与内存问题在现在的编程中总是能制造大大小小的bug ,在C++中尽管对数据进行封装隐藏,但有时候还是会暴露出来。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章