自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++程序员最重要的能力

       作为一名还未毕业的大学生,谈这样的话题难免会让人觉得不自量力,然而这只是我在目前这个阶段的一些认识,谈谈自己的看法。    在我看来,程序员是人与机器沟通的翻译官。人需要机器来帮助来解决一些问题,往往大部分人不想去为此而学习如何与机器沟通,所以需要一小部分人掌握这样的能力来为大部分人服务,这一小部分人就是程序员。    和普通的翻译官一样,程序言需要懂得多门“语言”,我把这样

2009-03-14 13:45:00 2999 5

原创 新博开通了

<br />新博地址:http://www.cnblogs.com/EvilGhost/

2011-04-08 14:33:00 603

原创 GDI+库需要GC吗?

<br /> <br /> <br /> <br />GDI+库提供了GC,但是在我看来,这没什么好处,反而让本来就不太容易的C++编程变得更困难。<br /><br /><br />库使用GC管理其对象的话,那么它应该了解对所有对象的引用,当存在引用的时候不去回收,但是这样做的代价是很大的,很多库确实就没有这样去做(例如GDI+)。这给库的使用者带来了很大的对象管理问题。C++程序员遵循一些良好的编程管理,在不需要对象的时候释放掉它,哪怕是被GC管理的,也应该主动让GC回收。拿GDI+来说,new了一个I

2011-02-24 12:15:00 842

原创 C++多线程安全类的问题

尝试着一步一步对一个简单的c++类进行多线程安全设计,剖析其中遇到的问题。

2010-06-28 12:08:00 6847 1

原创 第12章 让对象像数值一样工作

自定义类产生的隐式类型转换:当构造函数有且仅有一个未指定默认值的参数的时候,可能会产生参数类型到自定义类型的隐式转换。例如:class Test{    int v_;public:    Test(int i) : v_(i){}    int GetV() const{return v_;}}; void fun(const Test& test){  

2010-04-23 13:49:00 971 2

原创 第11章 定义抽象数据类型(续)

前面我们讨论了在定义抽象数据类型的时候应该如何去考虑,总结出了一点:用户使用及类型语义为导向进行设计。 这堂课我们将以一段好玩的代码来继续我们的类设计(代码已经发送到群邮件中)。 我给出了VC2005和VC2008的两个版本的工程,bin目录下是已经编译好的程序。如果没有这两个版本的IDE的话,那么可以用代码文件重新创建工程,并进行设置:工程为win32应用程序工程,工程使用预

2010-04-08 11:22:00 991 1

原创 第11章 定义抽象数据类型

定义抽象类型的目标:让自定义类型如何内置类型一样易用,其使用符合一般习惯。 确定类接口:当我们准备要编写一个抽象的时候(这里指的是使用类概念),我们首先要确定这个抽象的接口。我们的抽象类型是提供给客户(可能是自己)使用的,那么其接口应该从客户的使用上来考虑。例如,我们准备写一个窗口抽象,那么我们很容易就能够想到,客户可能对这个窗口进行移动、改变大小、显示、隐藏、关闭等等,这些动词就应该列入

2010-04-02 14:27:00 947

原创 第10章 管理内存和低级数据结构

由于CSDN博客改版,先暂时将内容在新浪博客发布,下面是文章链接:http://blog.sina.com.cn/s/blog_496491890100hr7b.html

2010-03-27 16:14:00 579

原创 第9章 定义新类型

内置类型:C++语言核心内置了一些类型,对于这些类型的性质和特征都是在C++语言核心定义的,例如:int,double,float,char,bool等等。 自定义类型:C++语言提供给用户自己定义类型的能力,用户可以根据自己对事物的抽象编写相应的自定义类型。例如标准库的:std::string,std::ostream,std::vector等等都是C++标准库的自定义类型。 c

2010-02-06 15:02:00 789

原创 接下来……

用户只将各种终端当作一种工具,他可以为这个工具付费购买。当得到这个工具之后,他不愿再为其他基于此工具的功能付费。但是他们愿意为他们想要得到的东西付费,而这些东西是可以通过这个工具而得到的。与其让用户去适应他们厌恶的消费模式、还不如迎合用户喜爱的消费模式,提供免费服务,而在其付费需求上思考。

2010-02-05 12:35:00 540

原创 第8章 编写泛型函数

模板:前面我们已经用过了标准库的一些设施,例如std::vector。可以发现,通过使用传递不同的类型,我们能够创建承载不同类型的动态数组。C++为我们提供了这样将类型作为参数的机制,这就是模板。 模板函数:通过C++提供的模板机制,我们可以编写函数族。既然称为族,那么它就不是一个单独的函数个体,而是一个集体。当我们通过编写函数来实现某一个功能的时候,可能我们还需要编写另外一个函数实现同样

2010-01-30 13:46:00 815

原创 第7章 使用关联容器

新概念:关联容器 “键-值”对 关联容器,其名字一分为二(关联-容器)。那么首先它是一种容器,容器这个概念已经在前面的章节介绍过了,那么关联是什么意思呢?它作为容器,它就得存储一系列数据,但是它却和我们之前看到的所有容器都不同,它存储的数据和某种“键”具有关联性。这和我们前面的“索引”和值之间的关联有些类似,不同之处是,“索引”和值仅仅是暂时的关联,当容器发生变化的时候,这种关联就可能会失

2010-01-08 10:41:00 732

原创 第6章 使用库算法

新概念:迭代器适配器、标准库remove语义 迭代器适配器具有函数特性,它是用来产生迭代器的,而其所产生的迭代器是和调用迭代器适配器时所传递给它的参数相关的。换句话说就是它产生的迭代器是可以访问其参数中的类型的。例如:std::back_inserter 我这里所指的标准库remove语义是指std::remove系列的算法的语义。这些算法对一个容器中的元素进行操作,它是不会改变这

2009-12-25 10:40:00 730

原创 第5章 使用顺序容器并分析字符串

新概念:迭代器、容器索引和迭代器失效 迭代器也是一种自定义类对象。但它本身在数据结构中具有一定的语义,它是用来访问、遍历某种数据结构的工具。对于我们的容器而言,它就是一种访问容器的接口。根据对容器的访问权限(读、写)分为两种迭代器:const迭代器和非const迭代器。前面已经讲过const语义了,所以很容易想到const迭代器是用来对容器做只读操作的。 前面我们都使用索引去访问我

2009-12-18 13:04:00 634

原创 第4章 组织程序和数据

新概念:划分模块、函数(形参、实参、按值传参、引用传参、重载)、错误提示机制(异常)、结构体、类、独立编译(头文件、源文件、声明)、预编译处理 之前我们所见到的教材示例都的代码已经变得有一些庞大了。C++和其他语言一样,对于处理庞大的代码提供了分模块机制。所谓的划分模块就是将我们的程序中相对独立的功能和数据划分开,每个单独的模块尽量只完成相对单一的功能,然后将这些相对独立的模块组合起来形成

2009-12-11 10:50:00 730

原创 第3章 使用批量数据

 新概念:连续输入的数据区分、字符串字面量连接、对象初始化、输入检测 连续输入是根据数据类型以及空白间隔来区分不同数据的。假设有这样一段代码:int i;std::string s;std::cin>>i>>s;我们输入的数据是:123abc,那么std::cin能够自动区分出这是两个数据,并将123赋给变量i,将abc赋给变量s。如果我们输入的数据是:123  456

2009-11-25 14:10:00 712

原创 第2章 循环和计数

 这堂课的标题提出了两个概念:1、循环 2、计数。 所谓循环,其实就像一个圈。我们从一个点开始,沿着这个圈走,我们最终又会回到我们的起点,如果继续下去便是重复我们先前的路线。在代码中表现出来的形式就是,一段用做循环的代码,当其执行完一次之后会根据我们的循环次数来决定是否再执行一次。这里引入了一个循环次数的概念,回到我们的圈,假设我们设置循环次数为5,那我们就会沿着这个圈走5圈,当最后一

2009-11-13 10:45:00 930 1

原创 第1章 字符串

 字符串是程序中经常使用的一种数据类型。串,顾名思义就是一些列单个元素的连接组合,那么字符串也就是由一系列单个字符连接而成。在上一堂课上,我们有一行代码是:std::cout"Hello world!"std::endl; 这行代码中,我给大家介绍了两个C++标准库对象以及使用方法。但是其中的"Hello world!"我没有给大家解释,其实这就是C++中的字符串字面量。 这里提到一个

2009-11-07 11:58:00 763 1

原创 第0章 初窥门径

 以控制台程序为例:#include  int main(){    // 在控制台屏幕输出Hello world!并换行    std::cout"Hello world!"std::endl;    return 0;} 这是一个简单的控制台应用程序,运行结果是在控制台屏幕上输出Hello world!并换行。我们可以从这个程序来初窥C++编程门径。

2009-11-02 13:10:00 986 1

原创 你想要72变还是孙悟空?

72变还是孙悟空?这是个问题。人人都想要得到72变的能力,不过不是每个人都愿意或者都能够去深山修行个数载。然而这里正好有个孙悟空具备72变的能力,能够降妖除魔,这给每个人又增添了一个选择,却给人带来了疑惑:掌握72变,无所不能,但却要花费更多的时间和精力去学习;收个孙悟空当徒弟固然可以降妖除魔,但是却让自己失去了驾驭超凡能力的机会。我们都知道,唐三藏选择的是后者,因为他很明白自己想要的什么

2009-09-02 09:45:00 1433 1

原创 第二步 对象

明天就是我和“妞妞”的纪念日了,我要带她去买好多好多的吃的,狠狠满足一下那个馋猫。每次纪念日“妞妞”都有送我礼物,这次她会送我什么呢?衣服?鞋子?算了,懒得去猜,到明天不就知道了么,当务之急是快快做个好梦,等着明天的日出。“waiting for you, waiting for you…”,“额,这么早,谁打电话来啊?还没睡醒呢。”我被一阵急促的手机铃声吵醒了,我眼也不睁的就接起了电话。“宝

2009-08-18 16:47:00 2454 1

原创 第一步 即日启程

“咚!咚!咚!”睡梦中的我被一阵急促的敲门声吵醒了。“谁呀?这么晚了。”我一边抱怨着一边很不情愿的钻出被窝。“儿子,是我,这么早就睡啦?”老爸打完牌回家了,应该差不多凌晨了。我眼也不睁的打开卧室的门,又立刻转身上床钻进了被窝。老爸哪知道我早就在学校养成了11点睡觉的习惯,这时正是美梦正酣的时刻。“儿子,明天我们要去九寨沟,你要不要准备一下?”老爸也没有进来,只是在门口探了个头说道。“九寨沟?”

2009-08-12 15:08:00 753 1

原创 C++编程范型浅谈

 每一个入门的C++程序员都应该知道C++支持多种编程范型,对于具体分类,一种普遍的看法认为包括有:类C语言、基于对象、面向对象、泛型。在我看到的讲述C++的书籍中,很大部分都在讲述C++面向对象编程,这使得部分依靠阅读此类书籍来学习C++的程序员会认为C++就是一个面向对象的语言。然而面向对象觉得不是C++的全部,也不可能成为C++的全部。在D&E中,Stroustrup将C++语言的设

2009-04-29 15:49:00 1039

原创 C++对象数量跟踪限制

       在实际的编程中,有很多时候需要限制对象的数量,比如代表设备资源的对象,代表上线客户的对象等等。那么我们就需要对这些类型的对象进行数量跟踪限制,这样我们就必须在类定义中加入一些额外的信息。        实践中不难发现,需要这让功能的类加入的额外信息似乎大同小异,按照避免重复编码的原则,我们应该寻找另外一种解决方案使得不用或者少做这样的重复工作。        很显然,

2009-04-26 15:02:00 916 1

原创 谁是绊脚石?

  你是否觉得国外的书才是经典,是否觉得国外的软件才优秀,是否觉得NB的程序员都不是中国人?我觉得不能这样一概而论。但是,摆在眼前的事实却是残酷的。是我们的知识乏于别人?是我们的技术逊于别人?是我们的智商低于别人?我不这样认为。在我看到的很多中国程序员其实本身具有很强的能力,但是总会有东西制约着他们,那谁是我们的绊脚石呢?  中国的程序员有一特点,那就是——忙。每天有忙不完的项目,老板不断

2009-04-12 11:05:00 782 1

原创 C语言家族起源

 最初,计算机语言非常混乱,高级语言根本不存在,连固定的语言形式也没有。贝尔实验室的Richard Martin在使用了计算机语言的过程中意识到了高级语言的必要性。他深入地研究后,开发出了他认为不错的BCPL语言。 然后Ken Thompson使用了BCPL,虽然他觉得很不错,但他认为如果想在一台PDP-7上使用BCPL,就必须精简BCPL。Ken Thompson深入地研究后,他开发出了一门

2008-12-01 10:15:00 5405

原创 对查找连续数段中缺失的一个数的想法

    有一段数段,MIN到MAX,存储顺序为无序,但是其中缺失了一个数,如何查找出这个数呢?    可以用标志位的方法,但个人觉得这个方法不是很好    然后我就想到了XOR运算    XOR运算有个特点,凡是从偶数开始的连续4个数进行XOR运算后结果为0,那么,如果其中缺失一个数的话,XOR结果就应  该是这个数。XOR运算具有可交换性质。那么我就可以利用这一点,将数段扩充为4的倍

2008-11-11 12:26:00 1283

空空如也

空空如也

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

TA关注的人

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