1 / 15
文档名称:

C++拷贝构造函数详解.doc

格式:doc   大小:31KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C++拷贝构造函数详解.doc

上传人:文库旗舰店 2019/10/10 文件大小:31 KB

下载得到文件列表

C++拷贝构造函数详解.doc

相关文档

文档介绍

文档介绍:C++,它们之间的复制是很简单的,例如:[c-sharp]viewplaincopyprint? a = 100;   b = a;   而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sharp]viewplaincopyprint?1.#include <iostream>   namespace std;  3.   CExample {  :  6.     int a;  :  8.      //构造函数  9.     CExample(int b)  10.     { a = b;}  11.  12.      //一般函数  13.     void Show ()  14.     {  15.        cout<<a<<endl;  16.      }  17.};  18.   main()  20.{  21.     CExample A(100);  22.     CExample B = A; //注意这里的对象初始化要调用拷贝构造函数,而非赋值  23.       ();  24.     return 0;  25.}  运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象B分配了内存并完成了与对象A的复制过程。就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。下面举例说明拷贝构造函数的工作过程。[c-sharp]viewplaincopyprint?1.#include <iostream>   namespace std;  3.   CExample {  :  6.    int a;  :  8.    //构造函数  9.    CExample(int b)  10.    { a = b;}  11.      12.    //拷贝构造函数  13.    CExample(const CExample& C)  14.    {  15.        a = ;  16.    }  17.  18.    //一般函数  19.    void Show ()  20.    {  21.        cout<<a<<endl;  22.    }  23.};  24.   main()  26.{  27.    CExample A(100);  28.    CExample B = A; // CExample B(A); 也是一样的  29.      ();  30.    return 0;  31.}   CExample(constCExample&C) 就是我们自定义的拷贝构造函数。可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。++中,下面三种对象需要调用拷贝构造函数![c-sharp]viewplaincopyprint? CExample   2.{  :  4. int a;  5.  :  7. //构造函数  8. CExample(int b)  9. {   10.  a = b;  11.  cout<<"creat: "<<a<<endl;  12. }  13.  14. //拷贝构造  15. CExample(const CExample& C)  16. {  17.  a = ;  18.  cout<<"copy"<<endl;  19. }  20.   21. //析构函数  22. ~CExample()  23. {  24.  cout<< "delete: "<<a<<endl;  25. }  26.  27.     void Show ()  28. {  29.         cout<<a<<endl;  30.     }  31.};  32.  33.//全局函数,传入的是对象   g_Fun(CExample C)  35.{  36. cout<<"test"<<endl;  37.}  38.   main()  40.{  41. CExample test(1);  42. //传入对象  43. g_Fu