在没有定义拷贝构造函数是,下图代码中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)。
新闻热点
疑难解答
图片精选