深入探索C++对象模型学习笔记
1.?? 关于对象1.1.? 虚表:
?
1.2.? 指向虚表的指针:改写函数签名,改为通过参数来返回。例如foo(A& a)
A foo(){
A a;?
a.f();
return a};
首先改造为
Foo(A& a){
????? ??? a.A::A()
a.f()
a.A::A(a)
}
然后优化掉copy构造(C++标准是允许的)
Foo(A& a){
?????????????? a.A::A()
a.f()
}
当编译器提供NRV优化时,最好还是提供一个。这样在大量的基于成员的初始化memberwise(与Bitwise相对)时,可以激活NRV。
Member Initialization List的执行顺序可能会因为插入新的代码而打乱。如果以member来初始化baseclass,或者memberclass。
?
?
3.?? Data语意学(The Semantics of Data)4.?? Function语意学(The Semantics of Function)