手机版
你好,游客 登录 注册
背景:
阅读新闻

C++拷贝构造函数

[日期:2013-03-28] 来源:Linux社区  作者:lishehe [字体: ]

最近在复习C++的考试,对于上机中出现多的是构造函数\拷贝构造函数\虚函数等等接触了很多,对它们的理解逐步的加深.

. 什么是拷贝构造函数

首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:

int a = 100; 

int b = a;

而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。

下面看一个类对象拷贝的简单例子。

#include <iostream> 
 using namespace std; 
 
 class CExample { 
 private: 
     int a; 
 public: 
      //构造函数 
     CExample(int b) 
     { a = b;} 
 
      //一般函数 
     void Show () 
     { 
        cout<<a<<endl; 
      } 
 }; 
 
 int main() 
 { 
     CExample A(100); 
     CExample B = A; //注意这里的对象初始化要调用拷贝构造函数,而非赋值 
      B.Show (); 
     return 0; 
 } 

运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象 B 分配了内存并完成了与对象 A 的复制过程。就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。
 
下面举例说明拷贝构造函数的工作过程。

#include <iostream> 
 using namespace std; 
 
 class CExample { 
 private: 
    int a; 
 public: 
    //构造函数 
    CExample(int b) 
    { a = b;} 
     
    //拷贝构造函数 
    CExample(const CExample& C) 
    { 
        a = C.a; 
    } 
 
    //一般函数 
    void Show () 
    { 
        cout<<a<<endl; 
    } 
 }; 
 
 int main() 
 { 
    CExample A(100); 
    CExample B = A; // CExample B(A); 也是一样的 
      B.Show (); 
    return 0; 
 } 

CExample(const CExample& C) 就是我们自定义的拷贝构造函数。可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。

linux
相关资讯       C++  拷贝构造函数 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款