C ++中的复制构造函数
复制构造函数是构造函数的一种。它创建一个对象,并使用相同类的对象对其进行初始化。如果在类中未定义复制构造函数,则编译器本身将定义一个。对于具有指针变量或动态内存分配的类,必须使用复制构造函数。
演示复制构造函数的程序如下。
示例
#include<iostream>
using namespace std;
class Demo {
private:
int num1, num2;
public:
Demo(int n1, int n2) {
num1 = n1;
num2 = n2;
}
Demo(const Demo &n) {
num1 = n.num1;
num2 = n.num2;
}
void display() {
cout<<"num1 = "<< num1 <<endl;
cout<<"num2 = "<< num2 <<endl;
}
};
int main() {
Demo obj1(10, 20);
Demo obj2 = obj1;
obj1.display();
obj2.display();
return 0;
}输出结果
num1 = 10 num2 = 20 num1 = 10 num2 = 20
在上面的程序中,Demo类包含一个普通的参数化构造函数和一个复制构造函数。除了这些之外,还有一个函数显示num1和num2的值。这些给出如下。
class Demo {
private:
int num1, num2;
public:
Demo(int n1, int n2) {
num1 = n1;
num2 = n2;
}
Demo(const Demo &n) {
num1 = n.num1;
num2 = n.num2;
}
void display() {
cout<<"num1 = "<< num1 <<endl;
cout<<"num2 = "<< num2 <<endl;
}
};在函数中main(),使用参数化的构造函数初始化类对象obj1。使用复制构造函数初始化对象obj2,然后将obj1的值复制到obj2中。最后显示obj1和obj2的值。这在下面给出。
Demo obj1(10, 20); Demo obj2 = obj1; obj1.display(); obj2.display();