龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

使用C++类对象构造函数

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
所谓C++类对象:一个类的所有对象对应同一个类对象,想要学好 C++ 类对象。首先要了解C++语言的概念是非常重要的,那么就先说一下什么是C++语言,所谓C++语言:是一种使用非常广泛

所谓C++类对象:一个类的所有对象对应同一个类对象,想要学好C++类对象。首先要了解C++语言的概念是非常重要的,那么就先说一下什么是C++语言,所谓C++语言:是一种使用非常广泛的计算机编程语言。

在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的,自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如:

  1. include <iostream>    
  2. using namespace std;    
  3.     
  4. class Test    
  5. {    
  6. public:    
  7.     Test(int temp)    
  8.     {    
  9.         p1=temp;    
  10.     }    
  11. protected:    
  12.     int p1;    
  13.     
  14. };    
  15.     
  16. void main()    
  17. {    
  18.     Test a(99);    
  19.     Test b=a;    

普通对象和类对象同为C++类对象,他们之间的特性有相似之处也有不同之处,类对象内部存在成员变量,而普通对象是没有的,当同样的复制方法发生在不同的对象上的时候。那么系统对他们进行的操作也是不一样的,就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的,在上面的代码中。

  1. #include <iostream>    
  2. using namespace std;    
  3.     
  4. class Test    
  5. {    
  6. public:    
  7.     Test(int temp)    
  8.     {    
  9.         p1=temp;    
  10.     }    
  11.     Test(Test &c_t)//这里就是自定义的拷贝构造函数    
  12.     {    
  13.         cout<<"进入copy构造函数"<<endl;    
  14.         p1=c_t.p1;//这句如果去掉就不能完成复制工作了,此句复制过程的核心语句    
  15.     }    
  16. public:    
  17.     int p1;    
  18. };    
  19.     
  20. void main()    
  21. {    
  22.     Test a(99);    
  23.     Test b=a;    
  24.     cout<<b.p1;    
  25.     cin.get();    

我们并没有看到拷贝构造函数,同样完成了复制工作,这又是为什么呢?因为当一个类没有自定义的拷贝构造函数的时候系统会自动提供一个默认的拷贝构造函数,来完成复制工作。

下面,我们为了说明情况,就普通情况而言(以上面的代码为例),C++类对象来自己定义一个与系统默认拷贝构造函数一样的拷贝构造函数,看看它的内部是如何工作的! 上面代码中的Test(Test &c_t)就是我们自定义的拷贝构造函数,拷贝构造函数的名称必须与类名称一致,函数的形式参数是本类型的一个引用变量,且必须是引用。

精彩图集

赞助商链接