c++
vegerjiangsir
用一生来寻找更多的幸福
展开
-
__cdecl,__stdcall,__fastcall和__thiscall的区别
函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别 首先,__thiscall是关于类的一种调用方式,它与其他调用方式的最大区别是: __thiscall对每个函数都增加了一个类指针参数 class aa { void bb(int cc); }; 实际上bb的函数原形是void bb(aa转载 2014-05-29 21:59:33 · 761 阅读 · 0 评论 -
C++ 虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使转载 2014-05-29 22:56:51 · 545 阅读 · 0 评论 -
关于cpp构造函数当中使用memset初始化的陷阱
memset在c中是用的非常频繁的初始化函数了,当然也被带到了cpp当中,因为当有如下类涉及到非常多的成员变量,很多coder经常偷懒改用memset在构造函数当中初始化 struct Test { int _1; int _2; long _3; ... Test(){memset(this,0,sizeof(Test));} }; 以上如果所有转载 2014-05-30 21:51:44 · 919 阅读 · 0 评论 -
C++ class实例的内存结构
引子 这些天让一些概念和算法烦得不知所措,只能听从佛祖教诲的:放下,然后上csdn去,看了两篇关于c++的文章,这个年头,能这样拷问“茴”字多个写法的人不多了,在这里赞一下,但里面的一些东西还是没有挖掘干净,所以有了写一些东西的冲动. 正文 在c++中,一个类虚函数表指针和成员是如何在内存中组织的大家看前面的文章已经很清楚了,但如果出现一堆继承关系后,它们又是怎样在内存结构组织的,这里并不想用汇编转载 2014-05-30 21:59:32 · 971 阅读 · 0 评论 -
虚表总结
让我们对一个带虚函数的类的内存布局做一个总结: 1)虚函数指针存储在对象内存的最开始4个字节中(这是C++规范决定的)【1】,虚函数指针指向虚表地址。 2)虚函数表是存储函数指针的数组,按照虚函数定义的顺序存储了所有虚函数的实际地址。虚函数被调用时,程序通过虚函数指针索引到虚函数表,再通过虚函数表索引到虚函数的实际地址。虚表并不是对象内存的一部分,类的所有对象共有一个虚转载 2014-05-30 22:14:10 · 738 阅读 · 0 评论 -
c++中多重继承的问题和解决方案
下面的代码有什么问题,解决方案是什么?原创 2014-06-01 00:06:32 · 898 阅读 · 0 评论 -
一种typedef定义方法
typedef struct{ char a; }QType,*QQType; int main(int argc, const char * argv[]) { QQType t = NULL; QType s = (QType){.a='a'}; t = &s; couta<<endl; return 0; }转载 2014-06-01 23:54:18 · 549 阅读 · 0 评论 -
struct对齐详解
更加形象介绍了struct的size计算原创 2014-05-30 15:57:38 · 2629 阅读 · 0 评论