文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++类的内部结构

C++类的内部结构

时间:2011-05-24  来源:Mr.Late

本文内容来源:《C++必知必会》

有些编译器将虚函数表的指针置于对象的开头,有些则置于对象的末尾,如果涉及多重继承,若干个虚函数表指针就可能会散布于对象之中。

即使类没有声明虚函数,其中还是有可能被插入一个虚函数表指针。事实上,不管类的数据成员的声明顺序如何,编译器都被允许(有节制地)重新安排它们的布局。

如果一个类类型像一个C 结构体一样非常重要,就可以定义一个POD(plain old data)。内建的类型,比如int, double等都是POD,而且 C struct和类似union的声明也都是POD。

1 struct S{ // 一个POD struct
2 int a;
3 double b;
4 };

如果计划对POD进行低层的处理,那么,在对代码进行维护的过程中,始终保持其为POD很重要,否则所有的赌注将会输得精光:

1 struct S{ //不再是一个POD struct
2 int a;
3 double b;
4 private:
5 std:string c;// 进行了一些维护
6 };

应该在高层操纵类对象,而不应该将它当成一组位的集合。如果希望复制一个类对象,那么永远不要使用memcpy这样的标准内存拷贝函数。

对象的构造函数是编译器建立隐藏机制的地方,该隐藏机制实现对象的虚函数以及诸如此类的东西。

有些聪明过头的代码要么假定虚函数表指针位于零偏移处,要么假设第一个声明的数据成员位于零偏移处。在半数以上的场合下,这两个假定都是不正确的。

相关阅读 更多 +
排行榜 更多 +
哥布林弹球b服手游下载

哥布林弹球b服手游下载

休闲益智 下载
小马样式盒游戏下载

小马样式盒游戏下载

休闲益智 下载
异变小镇中文版下载安装

异变小镇中文版下载安装

冒险解谜 下载