摘要: 今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此,从篇幅和内容来看,译者认为本文是深入理解C++对象模型比较好的一个出发点。这篇文章以前看到时就觉得很好,旧文重读,感觉理解得更多一些了,于是产
阅读全文
摘要: 一般的教材上讲到引用时,都是说“引用是对象的一个别名”。我认为这种定义是不清晰的,不利于初学者理解引用。至少我自己曾经被这个定义困扰了一段时间。到底什么是“别名”? 实际上,引用的实质是位于xxxxxx地址上的一个xxxx类型的对象。比如教科书上常用的例子: int a = 5; //不妨假设编译器将a分配到0x400000 int &b = a; 这里面b的准确意义就是,放在0x400000地址上的一个int类型对象。这里面包括了两重含义,首先b是一个int类型对象,因此他的使用完全与 int类型对象一样。另外这个int类型对象的地址是0x400000,因此从底层来看,它具有指针的一
阅读全文
摘要: 1.C++中类与结构的唯一区别是:类(class)定义中默认情况下的成员是private的,而结构(struct)定义中默认情况下的成员是public的。2. ::叫作用域区分符,指明一个函数属于哪个类或一个数据属于哪个类。::可以不跟类名,表示全局数据或全局函数(即非成员函数)。3.类名加载成员函数名之前而不是加在函数的返回类型前。错误:Tdate::void Set(int m , int d , int y) {}正确: void Tdate::Set(int m , int d , int y) {}4.一个类对象所占据的内存空间由它的数据成员所占据的空间总和所决定。类的成员函数不占据
阅读全文