用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