首页 > 编程 > C++ > 正文

C++之“拷贝构造函数”

2019-11-06 06:25:38
字体:
来源:转载
供稿:网友

在没有定义拷贝构造函数是,下图代码中main函数中实例化了 三个对象:

         Student stu1;Student stu2=stu1;Student stu3(stu1);

并把stu1初始化stu2和stu3,结构运行时:只出现一个student,

#include<iostream>using namespace std;class Student{public:	Student()	{		cout << "student" << endl;;	}};int main(){	Student stu1;	Student stu2=stu1;	Student stu3(stu1);}

当我们将拷贝构造函数定义时(如下代码):运行结构出现了三个 student:

#include<iostream>using namespace std;class Student{public:	Student()	{		cout << "student" << endl;;	}	Student(const Student&stu)//拷贝构造函数	{		cout << "student" << endl;;	}};int main(){	Student stu1;	Student stu2=stu1;	Student stu3(stu1);}

但是我们会发现,在我们实例化stu2,sut3时并没有进行拷贝构造函数的定义 ,但是依然可以初始化。

原因:在我们定义一个类时,如果没有写构造函数和拷贝构造函数,系统会自动为我们生成一个默认的构造函数和拷贝构造函数。当采用直接初始化或复制初始化时,系统会自动调用拷贝构造函数。在我们自定义后,系统将不会自动生成构造函数和拷贝构造函数。

注意:拷贝构造函数的定义形式:

Student(const Student&stu)。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选