C++拷贝构造函数详解.docx
- 文档编号:3034440
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:14
- 大小:49.70KB
C++拷贝构造函数详解.docx
《C++拷贝构造函数详解.docx》由会员分享,可在线阅读,更多相关《C++拷贝构造函数详解.docx(14页珍藏版)》请在冰豆网上搜索。
C++拷贝构造函数详解
一.什么是拷贝构造函数
首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:
[c-sharp] viewplaincopy
int a = 100;
int b = a;
而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。
下面看一个类对象拷贝的简单例子。
[c-sharp] viewplaincopy
#include
using namespace std;
class CExample {
private:
int a;
public:
//构造函数
CExample(int b)
{ a = b;}
//一般函数
void Show ()
{
cout< } }; int main() { CExample A(100); CExample B = A; //注意这里的对象初始化要调用拷贝构造函数,而非赋值 B.Show (); return 0; } 运行程序,屏幕输出100。 从以上代码的运行结果可以看出,系统为对象B分配了内存并完成了与对象A的复制过程。 就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。 下面举例说明拷贝构造函数的工作过程。 [c-sharp] viewplaincopy #include using namespace std; class CExample { private: int a; public: //构造函数 CExample(int b) { a = b;} //拷贝构造函数 CExample(const CExample& C) { a = C.a; } //一般函数 void Show () { cout< } }; int main() { CExample A(100); CExample B = A; // CExample B(A); 也是一样的 B.Show (); return 0; } CExample(constCExample&C) 就是我们自定义的拷贝构造函数。 可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。 二.拷贝构造函数的调用时机 在C++中,下面三种对象需要调用拷贝构造函数! 1.对象以值传递的方式传入函数参数 [c-sharp] viewplaincopy class CExample { private: int a; public: //构造函数 CExample(int b) { a = b; cout<<"creat: "< } //拷贝构造 CExample(const CExample& C) { a = C.a; cout<<"copy"< } //析构函数 ~CExample() { cout<< "delete: "< } void Show () {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 拷贝 构造 函数 详解