自定义复制构造函数

#include

c++中,当创建一个对象副本做为函数参数时,普通的构造函数没有被调用,所调用的构造函数是按位复制的默认复制构造函数,它指向的是为原对象分配的动态内存。当对象副本给销毁时,析构函数被调用,同时对象被销毁,原对象指向的动态空间给被释放。这样一来下次调用一个不存在的对象时,就出错了。

解决方法:

1.用引用传递对象参数 function(student &obj)

这采用的是传址复制方式。

2.自定义复制构造函数 function(const student &obj)

如果你的类需要析构函数来释放资源,则他也需要一个自定义复制函数来完成值的传递。

上面两种方法看起来差不多。这样当创建一个对象副本做为函数参数时,自定义构造函数被调用,创建对象副本为之分配动态内存。当对象副本给销毁时,析构函数被调用,同时对象副本被销毁,释放内存。而原来的对象没有任何变化,程序正常运行。

2 thoughts on “自定义复制构造函数

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.