1:当函数以相应的类作为形参列表时,对象可以作为函数的参数传入。在学习函数时,我们曾提过,值传递先复制实参产生副本。那么对象的副本是怎样的呢?

    复制构造函数是指类的对象被复制时所调用的函数。下面两种情况中对象都会调用复制构造函数。

(1)将一个对象赋值给另外一个对象时。例如:

对象1=对象2;

对象1(对象2);

    上面的程序中对象2的复制构造函数会被调用。

(2)作为值传递的实参。例如:

function(对象1);

    在function函数体内,使用的是对象1的副本。所以之前会调用对象1的复制构造函数。

    和构造函数一样,C++在未发现自定义的复制构造函数之前会创建一个默认的构造函数。

    自定义的复制构造函数的声明格式为:

类名(类名& 形参)

    值得注意的是,复制构造函数时引用传递的函数。既然默认复制构造函数已经完成复制工作,那为何需要重新定义它呢?例如,一个类具有指针类型的数据,默认复制构造函数执行之后,原对象和副本的指针成员指向的是同一个内存空间。通过指针改变该内存,就会改变两个对象实际应用的数据(也就是这块内存的内容)。这时可以自定义复制构造函数,将两个指针的内存分离开。

2:代码如下:

(1)germ.h

#include <string>
using std::string;
class germ{
public:
    int m_age;
    string m_name;
    germ(germ& g);//自定义复制构造函数  类名(类名&形参)
    germ(string s);//构造函数
    ~germ();//析构函数,执行收尾工作
    };
View Code

相关文章:

  • 2021-05-08
  • 2021-06-04
  • 2021-08-29
  • 2022-12-23
  • 2021-10-12
猜你喜欢
  • 2022-12-23
  • 2021-06-21
  • 2021-11-13
  • 2022-01-22
  • 2021-04-07
  • 2021-05-30
相关资源
相似解决方案