![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
SnowerWkh
悟已往之不谏,知来者之可追;实迷途其未远,觉今是而昨非。
展开
-
C++虚函数表解析(转)
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在转载 2015-02-07 22:50:12 · 657 阅读 · 0 评论 -
空类与空结构的大小
问题引入:经常看到有人说,在C++中如果定义空类/空结构,用sizeof对其取长度结果是1,疑问:对于这个结果个人比较困惑,无法确定是否正确,所以做了一系列测试来验证说法测试环境:gcc 3.4.4,vc++6.0,CVI8.0.0解决:在msdn中对sizeof的使用中有如下一句话引用:"...The sizeof operator转载 2015-02-07 22:24:00 · 1060 阅读 · 0 评论 -
5分钟搞定内存字节对齐
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧. /******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?体系结构的对齐和不对齐,是在时间和转载 2015-02-07 23:10:26 · 1942 阅读 · 0 评论 -
字符数组与字符指针
1.字符指针可以指向一个字符串。我们可以用字符串常量对字符指针进行初始化。例如,有说明语句:char *str = "This is a string.";是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址。这里要注意字符指针与字符数组之间的区别。例如,有说明语句:char string[ ]="This is a string.";转载 2015-02-07 22:53:54 · 835 阅读 · 0 评论 -
浅谈C++对象内存布局
最简单的类先从一个简单的类开始吧。如下,此简单类,非常简单,两个int成员,通过printf很容易了解到它的内存布局,本质就是一个C结构体,两个成员依次排列。对象:|成员1 | 成员2 | 1: #include 2: class Class0 3: { 4: public: 5: int member1;转载 2012-10-31 08:17:44 · 1565 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2015-02-07 22:59:01 · 1179 阅读 · 0 评论 -
类在内存中的分配问题
一个类,有成员变量:静态与非静态之分;而成员函数有三种:静态的、非静态的、虚的。那么这些个东西在内存中到底是如何分配的呢?以一个例子来说明:#include"iostream.h"class CObject{public:static int a;CObject();~CObject();void Fun();private:int m_coun转载 2012-10-31 08:16:01 · 1323 阅读 · 0 评论