用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