当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 普通类对象的内存布局首先我们从普通类对象的内存布局开始。
 

 

 ·函数对象概述    »显示摘要«
    摘要:顾名思义,就是在某种方式上表现得象一个函数的对象。典型地,它是指一个类的实例,这个类定义了应用操作符operator()。 函数对象是比函数更加通用的概念,因为函数对象可以定义跨越多次调用的可持久的部分(类似静态局部变量),同时又能够从对象的外面进行初始化和检查(和静态局部变量不同)。例如:class sum { int val; public:sum(int i) :val(i) { }oper......
 ·linux上搭建c/c++ide开发环境    »显示摘要«
    摘要:redhat linux上面没有提供anjuta软件包,上面提供了一个glade应用程序界面设计工具。linux上面使用anjuta和glade以及glademm软件包可以搭建一个linux下面进行c/c++软件开发的ide环境,可以进行gtk+/gnome的应用程序开发。 以前开发 linux 程序时写出好的图形化用户界面比较难。在 gimp 工具包 (gtk)诞生之后,这件事就变得比较容易......


C++对象布局及多态实现探索之内存布局
上一页   ...

{ 【程序编程相关:QFP

struct c012 【推荐阅读:TSOPII

 int foo() { return 1; } 【扩展信息:利用脚本封装实现网站悬浮广告

 static int sfoo() { return 1; }

 char c_;

 static int i_;

};

int c012::i_ = 1;

在这个类中我们加入了一个静态数据成员,一个普通成员函数与一个静态成员函数.

运行如下代码打印它的大小及对象中的内容.

print_size_detail(c012)

结果为:

the size of c012 is 1

the detail of c012 is cc

可以看到它的大小还是1字节,值为0xcc是因为我们没有初始化它,原因前面说过了.

从上面的结果我们可以映证,普通成员函数,静态成员函数,及静态成员变量皆不会在类的对象中有所表示,成员函数与对象的关联由编译器在编译时处理,正如我们会在后面看到的那样,编译器会在编译时决议出正确的普通成员函数地址,并将对象的地址以this指针的方式,做为第一个参数传递给普通成员函数,以此来进行关联.静态成员函数类似于全局函数,不与具体的对象关联.静态成员变量也一样.静态成员函数与静态成员变量与普通的全局函数及全局变量不同之处在于它们多了一层名字限定.

普通继承类对象的内存布局

下面看看普通继承类对象的内存布局.

定义一个空类c014从c011继承,再定义c015也是一个空类从c010与c011继承.
...   下一页
 ·c++的中抽象    »显示摘要«
    摘要:在c++中,以类、虚函数等为代表的数据抽象功能一直是c++的核心和难点。我认为c++的抽象应该是指:从我们需要解决的问题出发,在与该问题相关的一组关联对象中提取出主要的或共有的部分――说简单一点,就是用相同的行为来操作不同的对象。 从提出问题到找出与该问题相关的对象,这是一个互动的、反复的过程。在对相关对象的抽象中,随着认识的深入,我们可能会修改最初的目标,而最初目标的修改又可能使一组新的相关对......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE