用C++复制构造函数
时间:2020-02-23 14:29:55 来源:igfitidea点击:
在本文中,我们将了解和实现C++中的副本构造函数
什么是C++中的复制构造函数?
众所周知,构造函数在面向对象的编程中起着重要的作用。
构造函数是重要的子例程,用于在环境中创建和初始化对象。
如下所述,有不同类型的构造函数
- 参数化构造函数
- 非参数构造函数
- 复制构造函数
复制构造函数是一个子例程(方法),用于初始化使用同一类的另一个对象的对象。
即,它创建一个对象,并使用由这些对象组成的相同类的另一个对象对其进行初始化。
复制构造函数可帮助我们实现以下功能:
为了复制对象以便从方法调用返回。
从同一类的另一个对象创建和初始化一个对象。
复制对象并将其作为参数传递给方法。
C++复制构造函数的语法
看看下面的语法!
Class (const Class &old_obj);
obj:对将用于初始化同一类中另一个对象的对象的引用。
Class:类名称。
为什么需要复制构造函数?
请仔细阅读以下问题…。
当我们已经有构造函数时,为什么需要复制构造函数呢?
伙计们,这不是一个有效的问题吗?
好!我确实有一个答案可以满足这个问题。
有时,我们需要在运行时在类内动态分配资源,而通常的构造函数会执行成员操作。
这是我们需要"复制构造函数"的时候。
而且,如果我们不定义任何副本构造函数,则编译器将创建自己的副本构造函数,该副本构造函数将执行成员操作,并且对于运行时数据将失败。
复制构造函数的实现
在此示例中,我们创建了具有数据成员i和j的类AA。
此外,我们创建了一个参数化的构造函数以在运行时初始化数据值。
现在,我们创建了一个复制构造函数,以使用现有对象初始化一个对象,如下所示
例:
#include<iostream>
using namespace std;
class AA
{
int i,j;
public:
AA(int ii, int jj)
{
i = ii;
j = jj;
}
AA (const AA &ob) //Copy constructor
{
i = ob.i;
j = ob.j;
}
void display ()
{
cout<<i<<" "<<j<<endl;
}
};
int main()
{
AA obj(12,13);
AA obj11 = obj; //Calling the Copy constructor
cout<<"Using object obj11 to display the data members of object obj\n";
obj11.display();
return 0;
}
输出:
Using object obj11 to display the data members of object obj 12 13

