Inside c++
boydfd
这个作者很懒,什么都没留下…
展开
-
c++对象模型-对象模型
1:简单对象模型 1>介绍:每个成员都使用一个指针指向真正的成员。所以对象 的大小很好确定,就是成员数*指针大小。 2>用途:成员函数就是使用这个模型的 3>图: 4>加上继承:每增加一个基类,就多一个指针。 2:表格驱动对象模型 1>介绍:把所有和members相关的信息抽出来,放在data member table 和 m原创 2015-08-27 17:25:33 · 1036 阅读 · 0 评论 -
对象模型如何影响程序
先看一下一个简单的函数:X foobar(){ X xx; X *px = new X; xx.foo(); delete px; return x;}编译器做出的一些转换:void foobar(X& _result){ //按原来的程序需要构造两个临时变量 //所以这里使用引用的方式来返回结果 //调用构造函数 _res原创 2015-08-27 18:59:56 · 736 阅读 · 0 评论 -
default construction
4种情况下编译器会构造出nontrivial(有用)的构造函数 带有default construction的member class object 我们有两个class: class Foo { public: Foo(), Foo(int) … }; class Bar { public: Foo foo; char *str;}; 则编译器会在Bar中合成一个默认的构原创 2015-08-29 15:51:04 · 789 阅读 · 0 评论 -
copy constructor
copy constructor也分为trivial和nontrivial两种 如果class展现出bitwise copy semantics(按位拷贝语义),则不会构造出 copy constructor。反之,会构造出一个copy constructor。不要bitwise copy semantics 内含一个拥有nontrivial copy constructor的成员变量b原创 2015-08-30 09:23:37 · 784 阅读 · 0 评论 -
c++多继承布局
1:多重继承对于一个继承了多个base class 的对象,将其地址指定给最左端(也就是第一个)base class的指针, 情况将和单一继承时相同,因为两者都指向相同的其实地址。至于第二个或者更后面的base class的 地址指定操作(把derived class对象地址 赋给 第二个base class类型的指针),则需要将地址修改 加上,介于中间的base class subobjec原创 2015-09-16 20:05:47 · 633 阅读 · 0 评论