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