自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

转载 C++类的内存分配

一.  c++的内存分配:http://blog.sina.com.cn/s/blog_3cba7ec10100hh6p.html1、高位地址:栈(存放着局部变量和函数参数等数据),向下生长   (可读可写可执行) 2、                   堆(给动态分配内存时使用),向上生长             (可读可写可执行) 3、                

2015-08-31 16:07:11 391

转载 C++类内存分布

书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来:  先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到

2015-08-31 16:03:25 317

转载 虚表(C++)virtual table

C++ 中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技 术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚 函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里

2015-08-07 15:35:10 609

转载 关于 (&a+1) 的困惑

请先看以下程序: Q:若 int a[5];则 &a+1 的含义是甚么? A:&a+1 不是表示a的地址(设为Ox0010)加1,变为0x0011. 由于a为包括5个int类型的数组,则"&a+1"中的"+1"表示为相当于"1"个a大小的空间(或成为偏移),此时&a+1 表示 a[5]. Q:若 int* ptr =

2015-04-12 11:32:55 371

转载 int * * a[10] int * (*a)[10]和 int(*a[10])() 是什么意思

int* (*a)[10];a是一个指向包含10个int型指针元素的数组。比如:#include int main(){    // 定义数组,包含10个int*    int* b[10];    for(int i = 0; i         b[i] = new int(i+1);        int* (*a)[10] = &b; /

2015-04-12 11:23:45 657

转载 int *a[10]与int (*a)[10]的区别,

int *a[10]; 定义了一个指针数组,即10个int * 类型的指针。int (*a)[10]; 定义了一个指向行的指针变量,注意是”一个”指针变量,而上面的指针数组是”10个”指针变量。指向行的指针变量可以用来指向二位数组int x[N][10],a指向x即:a x 或者 x[0] 或者 &x[0][0]a+1 x[1] 或者 &x[1][0]a+2 x[2] 或

2015-04-12 11:12:01 1014

转载 虚函数表

虚函数表(Virtual Table,V-Table):使用 V-Table 实现 C++ 的多态。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中分配了指向这个表的指针的内存,所以,当用父类的指针来操作一个子类的时候,这张虚函数表就显得尤为重要了,它就像一个地图一样,指明了实际所应该调用的函数。编译器应该保证虚函数

2015-04-11 17:07:28 829

转载 不能被声明为虚函数的C++函数

常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。  1、为什么C++不支持普通函数为虚函数?  普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。  2、为什么C++不支持构造函数为虚函数?  这个原因很简单,主要是从语义上考虑,所以不

2015-04-11 16:45:29 331

转载 为什么构造函数不能声明为虚函数,析构函数可以

构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。2 虚函数

2015-04-11 16:23:44 330

转载 典型的Top K算法

Top K 算法详解应用场景:        搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。        假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。

2015-03-29 14:29:31 495

转载 c++类实例在内存中的分配

c++是一种面向对象的编程语言,它向下保持了对c的兼容,同时也允许程序员能够自由的操控内存,虽然会带来一些问题,但这不是我们要探讨的问题,略过不表。类是对某种对象的定义,包含变量和方法,也可以理解为现实生活中一类具有共同特征的事务的抽象,他是面向对象语言的基础。所以类是不占有内存的,可是如果类生成实例那么将会在内存中分配一块内存来存储这个类。    类的实例在内存中是如何分配内存的,有什么

2015-03-29 12:21:36 844

转载 const在c/c++中的区别

C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码:#include using namespace std;int main(){ const int a = 1; const int b = 2; int array[ a + b ] = {0}; f

2015-03-13 13:58:28 281

转载 C++中的const与指针

在c/c++中,指针本身就是一个难点,再加与const的结合,常会产生许多让人费解的地方,在这里做个小结。 1.定义const对象const int buffsize=512;因为常量定义后就不能修改,所以定义时必须初始化.const i,j=0; //error,i没有初始化2.const对象默认为文件的局部变量//file1.ccextern const i

2015-03-12 18:52:02 287

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除