C++ 中的复制构造函数

c++programmingserver side programming

复制构造函数是一种构造函数。它创建一个对象并用同一类的对象初始化它。如果类中未定义复制构造函数,则编译器本身会定义一个。对于具有指针变量或动态内存分配的类,复制构造函数是必需的。

演示复制构造函数的程序如下。

示例

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

相关文章