C++
文章平均质量分 53
wxcwuxuchun
这个作者很懒,什么都没留下…
展开
-
C++对象模型之函数成员(3)
1.1.1. 多重继承下的虚成员函数0001 class Base10002 {0003 public :0004 Base1();0005 virtual ~Base1();0006 virtual void speakClearly();0007 virtual Base1 *clone() const;0008 protected :0009原创 2004-01-27 21:09:00 · 924 阅读 · 0 评论 -
C++对象模型之简单对象模型(1)
第一章 简单对象模型1.1. 空对象的大小我们来看下面的这个类class Empty{};Empty这个类什么也不包含,其中没有任何数据和方法,那么,我们计算它所占据的空间大小sizeof(Empty)应该是多少呢?多数人认为应该是“0”,这似乎是毋庸置疑的,因为它什么也没有,不占据空间吗!但这到底对不对呢?我们来具体测试一下。我们建立这样一个文件Test.cpp,原创 2004-01-27 21:09:00 · 1081 阅读 · 0 评论 -
C++对象模型之数据成员模型(1)
第二章 数据成员模型1.1. 继承与数据成员考察下面的例子:0001 class Concrete10002 {0003 public :0004 int val;0005 char bit1;0006 };0007 class Concrete2 : public Concrete10008 {0009 public :0010原创 2004-02-05 00:43:00 · 930 阅读 · 0 评论 -
C++对象模型之函数成员(1)
第三章 函数成员1.1. 成员函数的三种调用方式1.1.1. 非静态成员函数非静态成员函数的效率和非成员函数相同,也就是说float magnitude(const Point3d * _this) {…};和float Point3d::magnitude() const {…};的效率相同。成员函数的转化步骤如下(编译器所做的工作):l原创 2004-01-27 21:09:00 · 1324 阅读 · 0 评论 -
C++对象模型之函数成员(2)
1.1. 虚成员函数1.1.1. 单一继承下的虚成员函数0001 class Point0002 {0003 public :0004 virtual ~Point();0005 virtual Point &mult(float) = 0;0006 float X() const { return _x };0007 virtual f原创 2004-01-27 21:09:00 · 841 阅读 · 0 评论 -
C++对象模型之函数成员(5)
1.1. 指向成员函数的函数指针1.1.1. 静态成员函数指针double (Point::*coord)() = &Point::x;coord指向的是x的实际地址。1.1.2. 非虚拟非静态成员函数指针double (Point::*coord)() = &Point::x;指针取得的是x在内存中的真正地址,但这个值不完全,他需要被绑定在某个class object原创 2004-01-27 21:09:00 · 1198 阅读 · 0 评论 -
C++对象模型之简单对象模型(2)
1.3. 包含方法的对象包含了方法的对象,其大小和内存布局应该是什么样子的呢?下面让我们来看一看。1.3.1. 不包含虚函数的对象考察下面的类:class Simple{public : Simple(char _a, int _i);private : char a; int i;};它的大小应该是多少呢?数据占用了8个字节,函数应该占用原创 2004-01-27 21:09:00 · 985 阅读 · 0 评论 -
C++对象模型之数据成员模型(2)
1.2. 虚拟继承与数据成员考察下面的例子:0001 #include 0002 //-------------------------------------------------------------------0003 class x {};0004 class y : virtual public x {};0005 class z : virtual原创 2004-01-27 21:09:00 · 1058 阅读 · 1 评论 -
C++对象模型之函数成员(4)
1.1.1. 虚拟继承下的虚成员函数0001 class Point2d0002 {0003 public :0004 Point2d(float x=0.00, float y=0.00);0005 virtual ~Point2d();0006 virtual void mumble();0007 virtual float Z() {retur原创 2004-01-27 21:09:00 · 855 阅读 · 0 评论