yys

Maya插件开发,(多多练习英文吧~)

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

P88

static  data member则放在global data segment中,不会影响class object的大小

但一个template class 的static  data member稍有不同

 

 P96

static  data member如果是从复杂继承关系里继承而来,或者是virtual base classs的member,程序中该
static  data member还是只有一个实体.而其存取路径也是直观的.

 

P98

每一个nonstatic data member的偏移量在编译期即可知道.

Point3d origin;

 

Point3d *pt = &origin;

 

origin.x=0.0;

pt->x= 0.0;

 

origin.x = 0.0等价于&origin+(&Point3d::x-1)

当Point3d是一个derived class,而其继承结果中有一个virtual base class时,而且x是

virtual base class的成员,那么对x的存取效率就有重大差异。因为pt不知道指向哪个对象,只能在运行时才知道。

 

P164

class B1{};

class B2{};

class D : public B1, public B2{};

 B1 *pb1=new D;//使用主虚表

B2 *pb2=new D; //使用次虚表

 

P169

 不要在virtual base class中声明nonstatic data member

 

 176

virtual function其地址在编译期是未知的,所以,对virtual member function取地址,得到的是一个索引值。

 

205

如果有需要以值方式传递返回一个local class object,那么需要提供一个copy constructor

 

206

-初始化virtual base class constructors(以base class声明顺序)

-初始化 base class,第二个和后续的base class初始化时,this指针需要调整

-设置vptr指向vtbl

-初始化member initialization list中的data member

-如果一个member没有出现在member initialization list里,但它有一个default contror,那么调用default contror

 

220

一个class 对于默认的copy assignment operator 在以下情况下不会表现出bitwisecopy:

-当class内带一个member object,而其class有一个copy assignment opt

-当一个class 的base calss有copy assignment opt

-当class声明了任何virtual functions

-当class继承自一个virtual base class

 

 224

 

copy assignment operator在虚拟继承情况下行为不佳,许多编译器不能得到正确的语义。所以不要让一个virtual base class有copy操作,所以不要在virtual base class中声明数据。

 

 

230

如果class没有destructor,那么只有在class内带的member object有destructor时,编译器才会合成出一个destructor。

 

235

 

 -开始执行class 的destructor

-如果class有member class object,而后者有destructor ,那么他们会以声明相反的顺序被调用。

-如果object内带vptr,则被重新设置,指向适当的base class的vtbl

-执行nonvirtual base class的destructor

-执行virtual base class的destructor

 

268

T c= a+b;不产生临时变量

 

T c; c= a+b;产生临时变量

 

 

 

 

 

 

 

 

posted on 2012-05-17 13:59  yys  阅读(240)  评论(0编辑  收藏  举报