2011年3月10日

【转】理解复杂的C/C++声明

摘要: 介绍曾经碰到过让你迷惑不解、类似于int*(*(*fp1)(int))[10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。需要强调一下的是,复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。注意:为了保证能够在同一行上显示代码和相关注释,本文最好在至少1024x768分辨率的显示器上阅读。基础让我们从一个非常简单的例子开始,如下:intn;这个应该被理解为“decla 阅读全文

posted @ 2011-03-10 22:45 鲁大山 阅读(620) 评论(1) 推荐(1)

【转】vtbl(虚函数表)与vptr(虚函数表指针)

摘要: 类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址注意的是,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一行。如果类中有N个虚函数,那么其虚函数表将有N*4字节的大小。虚函数(VirtualFunction)是通过一张虚函数表(VirtualTable)来实现的。简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了, 阅读全文

posted @ 2011-03-10 21:54 鲁大山 阅读(14994) 评论(0) 推荐(0)

今天开始做JAVA到C++移植

摘要: C++学了一阵子了,四月初要完成这个移植任务,在接下来的时间里,我将把整个移植的过程和其中遇到的问题,以及自己所想贴上来本人纯属菜鸟,希望大家指正 阅读全文

posted @ 2011-03-10 21:19 鲁大山 阅读(208) 评论(0) 推荐(0)

导航