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();