c++ model

2010-11-13

 

 c++对象模型中,Nonstatic data members 被配置于每一个class object之内,static data members 则被存放在所有的class object之外。

static 和 nonstatic funtion members也被放在所有的class object 之外。

 

2010-11-27

构造语义学:

 

default constructor:

 

 

copy constructor的建构操作:

 

member class object  成员类对象

一个class object 可以从两种方式复制得到

1.初始化                   ----> 从概念上,以copy constructor 完成

 

2.被指定(assignment)  ------->从概念上,以copy assignment operator完成

 

一个class 不展出bitwise copy semantics时,有四种情况:

 

1.当一个class含一个member class object,而后者有一个copy constructor

2.一个class 的base class 有一个copy constructor

3.一个class 声明一个或多个virtual function

4.一个class 派生自一个继承链,其中有一个或多个virtual base class

 

 

2011-5-20

关于返回值优化(RVO)(参见 c++ model, more effective)

如果真的决定返回一个对象:

一个有效率和正确的做法.

 

 

Rational a = 10;

Rational b(1,2);

 

Rational c = a*b;

这些写,使得编译器得以消除 operator * 内的临时对象。编译器把return表达式所定义的对象构造于c的内存内。这样临时对象的成本为0;

只需要一个constructor的成本。

 

c是具名对象,具名对象是不能被消除的。相反,未具名对象是编译器消除的对象。

所以当面对抉择使用具名或未具名对象的时候,最好是使用未具名对象。当然在情势的逼迫下,有时侯不得不使用具名对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值