C++/C入门之拷贝构造函数–C++之美

C++/C入门之拷贝构造函数–C++之美拷贝构造函数是类的构造函数之一 它在类对象到类对象赋值的时候被调用 英文名 Copy Constructor

欢迎大家来到IT世界,在知识的湖畔探索吧!

(一)认识拷贝构造函数

它的一般定义如下(粗体显示部分):

class Integer{

int i;

static int count;

Integer(int pi):i(0){

count++;

this->i = pi;

}

Integer(const Integer& ii):i(0){

this->i=ii.i;

count++;

}

};

int Integer::count = 0;

int main(){

Integer one(1);

Integer two = one;

}

C++/C入门之拷贝构造函数--C++之美
欢迎大家来到IT世界,在知识的湖畔探索吧!

很明显,通过赋值操作(拷贝)产生的对象,其初始化与普通对象的初始化过程必须是不一样的。例子里面的Integer two,通过Integer one拷贝生成,在没有自定义拷贝函数的前提下,它的成员变量和one的成员变量值,是一模一样的。这个时候,编译器会生成并调用默认拷贝构造函数,这个构造函数做的事情,就是位拷贝,也就是把one对象里的所有数据,原封不动等复制到two对象中。

然而,为拷贝通常满足不了用户的需求。上面例子中,程序希望通过静态类变量count来统计所有Integer对象的个数。如果移去粗体部分的自定义拷贝构造函数,count的值永远是1,如论通过拷贝的方式产生了多少对象。显然,这不是程序设计者希望看到的结果。

(三)继承中的拷贝构造函数

构造函数,拷贝构造函数和operator=重载函数,不属于类继承时被派生类继承的函数之列。

另外,由于类赋值操作会默认调用到拷贝构造函数,一些在operator=重载函数实现的逻辑,也可以被挪到拷贝构造函数当中

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/105234.html

(0)
上一篇 4天前
下一篇 3天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信