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