首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

对构造函数、拷贝构造函数跟赋值操作符调用的简单回顾

2012-12-25 
对构造函数、拷贝构造函数和赋值操作符调用的简单回顾本文只是测试构造函数、拷贝构造函数和赋值操作符的调

对构造函数、拷贝构造函数和赋值操作符调用的简单回顾
本文只是测试构造函数、拷贝构造函数和赋值操作符的调用问题,不涉及这些函数内的具体实现,所以多包涵

还有如果觉得有不足之处还望指出,谢谢…………

?

?

?

?

?

Objected is constructed.(参数)

Objected is constructed.(无参数)

Object is copied. ? ? ? ? ? //每次传参都会构建临时对象

getO

Object is copied.

Object is destructed.

Object is operator =.

Object is destructed.

?

Object o2 = getObject(o):

Object is copied.

getO

Object is copied.

Object is destructed.

?

o1 = getObject(o):

Object is copied.

getO

Object is copied.

Object is destructed.

Object is operator =.

Object is destructed.

?

?

getObject1:

Objected is constructed.(无参数)

getO1

Object is copied.

Object is operator =.

Object is destructed.

?

Object o22 = getObject(o):

getO1

Object is copied.

?

o11 = getObject(o):

Object is copied.

getO

Object is copied.

Object is destructed.

Object is operator =.

Object is destructed.

?

?

getObject2:

Objected is constructed.(无参数)

getO2

Object is operator =.

?

Object o222 = getObject(o):

getO2

Object is copied.

?

o111 = getObject(o):

Object is copied.

getO

Object is copied.

Object is destructed.

Object is operator =.

Object is destructed.

end


拷贝构造函数和赋值操作符:同样是利用现有对象的值,生成/更新另一个对象的值。区别在于:拷贝构造函数是去完成对未初始化的存储区的初始化,而赋值操作符则是处理一个已经存在的对象。对一个对象赋值,当它一次出现时,它将调用拷贝构造函数,以后每次出现,都调用赋值操作符。
定义对象a,并用另一个对象b对a进行初始化时,若没有拷贝构造函数时,那么编译器会自动生成一个T b(1);//假设对象b已经初始化T a(b);//初始化阶段,调用拷贝构造函数T c = b;//虽然使用了“=”,但是初始化阶段,仍调用拷贝构造函数c = a; //因为对象c已经定义,所以此处调用赋值操作符重载函数。如果没有编译器会自动生成一个。?

?

热点排行