Welcome 微信登录

首页 / 软件开发 / C++

在未来时态下开发C++程序

在未来时态下开发C++程序

在未来时态下开发C++程序2008-01-05 好的软件能够适应变化。它提供新的特性,适应到新的平台,满足新的需求,处理新的输入。新的函数将被加入到函数库中,新的重载将发生,于是要注意那些含糊的函数调用行为的结果;新的类将会加入继承层次,现在的派生类将会是以后的基类,并已为此作好准备;将会编制新的应用软件,函数将在新的运行环境下被调用,它们应该被写得在新平台上运行正确;程序的维护人员通常不是原来编写它们的人,因此应该被设计得易于被别人理解、维护和扩充。这...
数据结构学习(C++)之双向链表

数据结构学习(C++)之双向链表

数据结构学习(C++)之双向链表2008-01-05 原书这部分内容很多,至少相对于循环链表是很多。相信当你把单链表的指针域搞清楚后,这部分应该难不倒你。现在我的问题是,能不能从单链表派生出双向链表?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />你可以有几种做法: 一种就是先定义一个双链节点--但是,它的名字必须叫Node,这是...
数据结构学习(C++)之稀疏矩阵

数据结构学习(C++)之稀疏矩阵

数据结构学习(C++)之稀疏矩阵2008-01-05先说说什么叫稀疏矩阵。你说,这个问题很简单吗,那你一定不知道中国学术界的嘴皮子仗,对一个字眼的“抠”将会导致两种相反的结论。这是清华2000年的一道考研题:“表示一个有1000个顶点,1000条边的有向图的邻接矩阵有多少个矩阵元素?是否稀疏矩阵?”如果你是个喜欢研究出题者心理活动的人,你可以看出这里有两个陷阱,就是让明明会的人答错,我不想说出是什么,留给读者...
数据结构学习(C++)之栈和队列

数据结构学习(C++)之栈和队列

数据结构学习(C++)之栈和队列2008-01-05栈和队列是操作受限的线性表,好像每本讲数据结构的数都是这么说的。有些书按照这个思路给出了定义和实现;但是很遗憾,本文没有这样做,所以,有些书中的做法是重复建设,这或许可以用不是一个人写的这样的理由来开脱。顺序表示的栈和队列,必须预先分配空间,并且空间大小受限,使用起来限制比较多。而且,由于限定存取位置,顺序表示的随机存取的优点就没有了,所以,链式结构应该是首选。栈的定义和实现#ifndef Stack_H...
数据结构学习(C++)之递归

数据结构学习(C++)之递归

数据结构学习(C++)之递归2008-01-05看过这样一道题,问,“程序结构化设计的三种基础结构,顺序、选择、循环是不是必须的?”当然,你知道这样一个论断,只要有这三种就足够了;但是能不能更少呢?答案是“可以”,原因就是递归能取代循环的作用,例如下面的对一个数组里面元素求和的函数:float rsum (float a[], const int n){if (n <= 0) return 0;else...
数据结构学习(C++)之二叉树

数据结构学习(C++)之二叉树

数据结构学习(C++)之二叉树2008-01-05树因为现实世界中存在这“树”这种结构——族谱、等级制度、目录分类等等,而为了研究这类问题,必须能够将树储存,而如何储存将取决于所需要的操作。这里有个问题,是否允许存在空树。有些书认为树都是非空的,因为树表示的是一种现实结构,而0不是自然数;我用过的教科书都是说可以有空树,当然是为了和二叉树统一。这个没有什么原则上的差别,反正就是一种习惯。二叉树二叉树可以说是人...
数据结构学习(C++)之图

数据结构学习(C++)之图

数据结构学习(C++)之图2008-01-05图的应用恐怕是所有数据结构中最宽泛的了,但这也注定了在讲“数据结构的图”的时候没什么好讲的——关于图的最重要的是算法,而且相当的一部分都是很专业的,一般的人几乎不会接触到;相对而言,结构就显得分量很轻。你可以看到关于图中元素的操作很少,远没有单链表那里列出的一大堆“接口”。——一个结构如果复杂,那么能确切定义的操作就...
C++中审慎使用异常规格

C++中审慎使用异常规格

C++中审慎使用异常规格2008-01-05毫无疑问,异常规格是一个引人注目的特性。它使得代码更容易理解,因为它明确地描述了一个函数可以抛出什么样的异常。但是它不只是一个有趣的注释。编译器在编译时有时能够检测到异常规格的不一致。而且如果一个函数抛出一个不在异常规格范围里的异常,系统在运行时能够检测出这个错误,然后一个特殊函数unexpected将被自动地调用。异常规格既可以做为一个指导性文档同时也是异常使用的强制约束机制,它好像有着很诱人的外表。不过在通常...
用C++品尝Vista美味:界面的毛玻璃效果

用C++品尝Vista美味:界面的毛玻璃效果

用C++品尝Vista美味:界面的毛玻璃效果2008-01-05 天极 谢启东简介本文将演示在基于Windows Vista的普通Windows应用程序及对话框程序中,如何利用C++来生成Aero毛玻璃效果,此处使用的是Beta 2版本的Vista及Windows SDK,也许在后续的版本中,一些API在细节上会有所变化。另外,文中没有使用MFC,全部例子用WTL 7.5生成,其可在http://wtl.sourceforge.net/下载得到,虽然此处使...
C++启蒙之用C++制作程序

C++启蒙之用C++制作程序

C++启蒙之用C++制作程序2008-01-05 天极 陶刚现在我们已经解决了原始的书店问题了:我们必须读取销售记录文件并生成一个报告,显示出每本书的总共收入、平均售价和销售数量。练习24:编写一个程序来读取几个事务记录。对于每个新读取的事务记录,检测它的ISBN是否与前面的相同,计算每个ISBN有多少个事务记录。通过给出几条事务记录来测试这个程序。这些事务应该有多个ISBN,但是每个ISBN的记录应该集合在一起。我们假设某个给定的ISBN的所有事务记录是...
C++启蒙之C++中的类

C++启蒙之C++中的类

C++启蒙之C++中的类2008-01-05 天极 陶刚在解决我们的书店问题之前,我们需要理解的唯一的剩余问题是如何编写一个数据结构(data structure)来表示我们的事务数据。在C++中我们通过定义类(class)来定义自己的数据结构。类机制是C++中最重要的特性之一。实际上,C++设计的主要聚焦点是使我们能够定义类类型(class types),使它的操作与内建类型一样自然。我们已经看到了类库类型(例如istream和ostream),它们都是...
C++运算符重载转换运算符

C++运算符重载转换运算符

C++运算符重载转换运算符2008-01-05 PConline 管宁为什么需要转换运算符?大家知道对于内置类型的数据我们可以通过强制转换符的使用来转换数据,例如(int)2.1f;自定义类也是类型,那么自定义类的对象在很多情况下也需要支持此操作,C++提供了转换运算符重载函数,它使得自定义类对象的强转换成为可能。转换运算符的生命方式比较特别,方法如下:operator 类名();转换运算符的重载函数是没有返回类型的,它和类的构造函数,析构函数一样是不遵循...
C++运算符重载赋值运算符

C++运算符重载赋值运算符

C++运算符重载赋值运算符2008-01-05 PConline 管宁自定义类的赋值运算符重载函数的作用与内置赋值运算符的作用类似,但是要要注意的是,它与拷贝构造函数与析构函数一样,要注意深拷贝浅拷贝的问题,在没有深拷贝浅拷贝的情况下,如果没有指定默认的赋值运算符重载函数,那么系统将会自动提供一个赋值运算符重载函数。赋值运算符重载函数的定义与其它运算符重载函数的定义是差不多的。下面我们以实例说明如何使用它,代码如下://程序作者:管宁//站点:www.cn...
C++的iostream标准库介绍

C++的iostream标准库介绍

C++的iostream标准库介绍2008-01-05 PConline 管宁我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作为一个c++的标准库组件提供给程序员使用。iostream为内置类型类型对象提供了输入输出支持,同时也支持文件的输入输出,类的设计者可以通过对iostream库的扩展,...
C++箴言:如何访问模板化基类中的名字

C++箴言:如何访问模板化基类中的名字

C++箴言:如何访问模板化基类中的名字2008-01-05 假设我们要写一个应用程序,它可以把消息传送到几个不同的公司去。消息既可以以加密方式也可以以明文(不加密)的方式传送。如果我们有足够的信息在编译期间确定哪个消息将要发送给哪个公司,我们就可以用一个 template-based(模板基)来解决问题:class CompanyA {public: ... void sendCleartext(const std::string& msg); ...
用C++ Bulider在WIN.INI中保存信息

用C++ Bulider在WIN.INI中保存信息

用C++ Bulider在WIN.INI中保存信息2008-01-05现在许多软件把程序中需要的数据保存在注册表中,这样当用户装的软件越来越多时,致使注册表越来越庞大,容易使系统出错。当然,微软也建议在注册表中保存数据,但当我们需要保存的数据不多时完全可以把数据保存在WIN.INI中,这样可以很方便地维护,实现方法相对来说比较简单。下面我以Borland C++ Builder为例来说说如何实现。原理其实很简单,只需调用API的 WriteProfileS...
用C++ Builder建立数据库VCL使用经验

用C++ Builder建立数据库VCL使用经验

用C++ Builder建立数据库VCL使用经验2008-01-05随着数据库的广泛应用,数据库编程已经成为程序设计中发展迅猛的一支。C++ Builder在数据库开发方面具有的强大功能是无可比拟的,你甚至可以不写一行程序就生成漂亮的数据库程序。下面对C++Builder中的几个数据库VCL的使用技巧做一下介绍:一、DBGrid控件1.设置DBGrid的字段显示宽度属性为了在DBGrid中建立较小的列,你必须建立一个显示标题,它等于或小于字段值。例如,你希...
<< 171 172 173 174 175 176 177 178 179 180 >>