C++
文章平均质量分 71
hustli
这个作者很懒,什么都没留下…
展开
-
彻底粉碎“指针与数组的困惑”(上)
摘要:指针是C语言的精髓,也算是C++的精髓吧,要掌握它不是很容易,特别是与数组经常弄混,希望通过本文,你能够有一个清楚的认识。 (1)一维数组与指针 首先我们看一下下面的例子: char a[10], *p; p=a; p是一个char类型的指针,它里面放的是数组a的首地址,即a[0];a这里有双重含义:地址,也可以看作是常量指针;结构,里面包含了10个char元素。原创 2003-07-07 08:30:00 · 3169 阅读 · 2 评论 -
const的思考
1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如: c原创 2003-06-30 13:39:00 · 2668 阅读 · 0 评论 -
C++的历史纪实
语言的发展是一个逐步地进的过程,C++是直接从C语言发展过来的,而C语言是从B语言发展过来的,B语言是BCPL的一个解释性后代,BCPL是Basic CPL。其中最有趣的是CPL中C的由来,由于当时这个语言是剑桥大学和伦敦大学合作开发的,在伦敦的人员加入之前,C表示剑桥,伦敦人员加入之后,C表示Combined组合。还有一种非正式的说法,C表示Christopher,因为Christoph原创 2003-06-27 16:32:00 · 1768 阅读 · 0 评论 -
C++中的预处理(下)
其他预编译指令 除了上面我们说的集中常用的编译指令,还有3种不太常见的编译指令:#line、#error、#pragma,我们接下来就简单的谈一下。 #line的语法如下: #line number filename 例如:#line 30 a.h 其中,文件名a.h可以省略不写。 这条指令可以改变当前的行号和文件名,例如上面的这条预处理指令就可以改变当原创 2003-07-07 09:23:00 · 3244 阅读 · 0 评论 -
浅析C++里面的宏
说到宏,恐怕大家都能说出点东西来:一种预处理,没有分号(真的吗?)。然后呢?嗯.......茫然中......好吧,我们就从这开始说起。最常见的宏恐怕是#include了,其次就是#define还有.......还是从宏的用途分类吧:1、#include 主要用于包含引用文件,至今其地位无人能替代;2、注释掉代码。例如: #if 0 ....... #endif; 这种机制原创 2003-06-30 13:45:00 · 5012 阅读 · 5 评论 -
小议static
这是很早之前写的一篇文章,呵呵,铁出来仅供参考 1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。 2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值原创 2003-08-03 17:08:00 · 3536 阅读 · 3 评论 -
“瑜珈山夜话”--- 参考资料
本来不想写的,可是又怕产生误会,最后决定还是写出来吧。 纸质书籍类: 1、C++程序设计语言(特别版) 机械工业出版社 裘宗燕(译) 2、C++Primer(第三版,中文) 中国电力出版社 潘爱民(译) 3、深度探索C++对象模型 华中科技大学出版社 候捷(译) 4、C++语言的设计和演化 机械工业出版社 裘宗燕(译)原创 2003-07-27 11:26:00 · 2385 阅读 · 0 评论 -
C++中的预处理(上)
一、预处理的由来: 在C++的历史发展中,有很多的语言特征(特别是语言的晦涩之处)来自于C语言,预处理就是其中的一个。C++从C语言那里把C语言预处理器继承过来(C语言预处理器,被Bjarne博士简称为Cpp,不知道是不是C Program Preprocessor的简称)。二、常见的预处理功能: 预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有原创 2003-07-07 08:27:00 · 4735 阅读 · 1 评论 -
恶草丛生的阴暗角落---虚拟机制(下)
虚函数的开销 人们一提到虚函数,首先想到的是多态,紧接着想到的就是开销(至少我开始的时候就是这样子的),那么虚函数的开销来自哪里?开销究竟有多大? 在理论上来讲,虚函数所带来的动态开销主要依赖于3个方面:编译器、操作系统和机器。但是在现实中,几乎所有的编译器都以同样的方式操作。调用一个虚函数的开销主要来自于2个方面,一个是如果虚函数不是内联的,就要增加一些额外的机器指令,不过一般来说也原创 2003-07-02 16:24:00 · 2352 阅读 · 0 评论 -
恶草丛生的阴暗角落---虚拟机制(上)
摘要:C++是一个恶草丛生的地带,虚拟机制是很重要,但是很危险的一个C++特性,所以有必要对此作一下阐述,希望能对大家有所帮助。 什么是虚函数 简单地说,就是在成员函数前加关键字virtual,这样这个成员函数就变成了虚函数。 虚函数的思想是从Simula借来得,在C++里面算得上最显著的特征。 虚函数允许派生类取代基类所提供的实现。编译器确保当对象原创 2003-07-02 16:20:00 · 5612 阅读 · 0 评论 -
Union的迷思
联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是联合、怎么去用、有什么需要注意的地方呢?就这些问题,我试着做一些简单的回答,里面肯定还有不当的地方,欢迎指出!1、什么是联合? “联合”是一种特殊的类,也是一种构造类型的数据结构。 在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许原创 2003-06-30 14:21:00 · 1517 阅读 · 0 评论 -
C++学习历程
记得第一次听说电脑,大约是在高一的时候,当时学校新进了一批586,当时觉得好的不得了,还专门请了老师来给我们上课。第一次就是讲什么计算机的历史,大概是因为有领导在场,老师讲的很呆板。第二节课,没有了领导的旁听,老师开始大刀阔斧的神侃,谈到黑客的历史,程序语言的演化。当时觉得天底下最厉害的就要数黑客了,于是我一直就把黑客当作心目中的偶像。可惜的是,我们就上了这两节课,以后学校已抓学习的名义把原创 2003-06-27 16:32:00 · 2868 阅读 · 0 评论 -
解除心头的困惑--纯虚函数
摘要:虚函数里面有一个很特殊的东东,那就是纯虚函数,关于纯虚函数的问题也是bbs上常见的话题,这里我想对此作一个小小的论述,希望能给初学者一个满意的解释。一、引入原因: 1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。 2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。 为了解决上原创 2003-07-02 16:15:00 · 5494 阅读 · 1 评论