...::ALL4LEO::...

life is simple...
posts - 3, comments - 0, trackbacks - 0, articles - 3

2006年3月24日

2.1什么是C++
   C++是一种通用程序设计语言,特别是面向对象设计,它
            是一个更好的C++
            支持数据抽象
            支持面向对象的程序设计.
            支持通用型程序设计

对语言特征的细节理解----甚至有关一个语言的所有特征----也不能代替对该语言以及使用它的基本技术的全局性认识.

2.2 程序设计范畴
    
        面向对象程序设计是一种程序设计技术----对一组问题写出好程序的一种范型.面向对象的程序设计语言它意味着某种程序设计语言特别提供了一些机制,可以很好地支持在其中做面向对象地程序设计.
支持和允许某种技术有着本质地区别.
     
         要支持某种范型,不仅在于某些能直接用于该种范型地显见形式的语言功能,还在于一些形式上的更加细微的,对无意中偏离了这种范型的情况做编译时或者运行时的检查.
     
         重要的问题不是在于语言究竟拥有多少特性,而在于它拥有的特性是否足于在某个希望的应用领域中支持某种希望的程序设计风格.
1.所用的特性必须清晰而优雅地集成在语言之中.
2.必须能组合使用这些特性去得到一种解决方案,如果无法做这样地组合,那就会要求额外地独立地特性.
3.应尽可能减少荒谬地和专用的特性.
4.任何特性的实现都不应该给未使用这种特性的程序增加额外的开销.
5.用户只需要了解在写程序时明确使用哪个语言的子集.

posted @ 2006-03-24 17:14 leo.chen 阅读(347) | 评论 (0)编辑 收藏

1.6 C和C++

C被选C++的基础语言是因为:

1.是通用的,简洁的,相对低级的.

2.适合用于大部分系统设计工作.

3.可以在任何地方的任何系统上运行.

4.适用于UNIX程序设计环境.

1.6.1 给C程序员的建议

1.在C++里几乎不需要用宏, 用const或enum定义明显的常量,用inline避免函数调用额外的开销,用template去刻划一组函数或者类型,用namespace去避免名字冲突.

2.不要在你需要变量之前去声明它,以保证你能立即对它进行初始化.声明能出现语句的所有位置上,可以出现在for语句的初始化部分,也可以出现在条件中.

3.不要用naloc( ),new运算符能将同样的事情做好.对于ralloc(  ),请试一试vector( ).

4.试着去避免void*,指针算术,联合和强制,除了在某些函数和类实现的深层之外.在大部分情况下,强制都是设计错误的指示器.如果你必须使用某个显式的类型转换,请设法使用一个新的强制,设法写出一个描述你想做的事情更精确的语句.

5.尽量少使用数组和C风格的字符串.与传统的C风格相比,使用C++标准库中的string和vvecter常常可以简化设计.

 1.7有关在C++里编程的思考

完成设计一个程序工作的三个步骤:

1.取得对问题的一个清晰的理解(分析).

2.标识出在一个解决方案中所设计到的关键形概念(设计).

3.用程序去表达这个解决方案(编程).

1.8 忠告

学习C++中或许应该考虑的'规则':随着你变得更加熟练,你将能把它转化为某种更适合你的那类应用系统或者你自己的程序设计风格的东西,要写出一个好程序,需要智慧,品味,和耐性.

1.程序的结构尽可能地直接反映问题解决方案的思想:

    a.如果你能把它看成一个独立的概念,就把它做成一个类.

    b.如果你能把它看成一个独立的实体,就把它做为某个类的一个对象.

    c.如果两个类有共同的界面.,就把这个界面做成一个抽象类.

    d.如果两个类的实现有某种显著的共同东西,就把这些共性做成一个基类.

    e.如果一个类是一种对象的容器,就把它做成一个模板.

     f.如果一个函数实现对某容器的一个算法.将它实现为一簇容器的可用的模板函数.

    g.如果一组类.模板互相之间有某种逻辑关系.就把他们放在一个名字空间里.

2.在你定义一个并不是实现某个象矩阵和复数这样一个数学对象的类的时候.或者定义一个低层的类型如连接表的时候:

    a.不要使用全局数据,使用成员.

    b.不要使用全局函数.

    c.不要使用公用数据成员.

    d.不要使用友元除非是为了避免[a]或[c].

    e.不要在一个类里放类型域,采用虚函数.

    f.不要使用在线函数,除非作为效果显著的优化.

这些粗略的使用规则,不是万古不变的定律.只应使用在合适的地方,从来没有任何东西能够代替智慧,经验,常识和好的鉴赏力.

 

 

 

 

 

 

                                                                                                                                                     Leo chen

                                                                                                                   2006 /2/23                         于武汉理工

posted @ 2006-03-24 17:12 leo.chen 阅读(330) | 评论 (0)编辑 收藏

中文版序言

1998年ISO的C++标准(ISO/IEC14882 Standard For The C++ Progromming Language )    得到了批准.

标准库的主要新增部分:

STL-为容器迭代器和算法提供了通用的,高效的,类型安全的和扩展的框架.

标准C++及其标准库能编写比过去更好,更优雅,更高效的C++程序.C++现在可以作为高级语言来讲授,重点一开始就可以放在算法和容器上,而不用在位,联合,C风格字符串上纠缠不休了,地层的慨念(如数组,重要的指针应用和强制转换)可以等到C++程序员,学生或读者能够在实现这些功能的高级慨念的大背景中看待它们的时候,在对这些功能进行阐释.

      我想特别强调(怎么强调都不过分),应该多使用静态类型安全的字符串和容器,而不要使用大量宏,强制转换和数组的编程风格.我认为C/C++形式的宏是一种严重的缺陷-现在应为有了模板,名词空间,在线函数和常量这些正确的语言功能,它很大程度上是一种多语了.同样,在任何语言中,强制转换是错误的主要渊源.不用它们工程大大提高了C++编程的安全性和优雅性.

                                                                                                                      Bjarne Stroustrup.

译言       

       本书远远地超出了C++及其程序设计的范畴,还用大量篇幅去讨论模件开发过程及其问题.

        B.S.:希望读者带着一种健康的怀疑态度.

作者只是在总结和论述在这个领域中工作的经验,请不要将本书中的东西作为教条.

B.S.:你从C++语言中的收获大致与在实践这个语言的工程所付出成正比,

           本书将介绍每种主要的C++语言特性和这个语言的标准库这里所关注的是将语言作为一种设计和编程的工具,而不是语言本身.本书目的是帮助读者理解C++所提供的功能将如何支持关键性的程序设计技术,C++语言,它的基本原理,以及使用时所需要的关键性技术.                                                                                                                                  

posted @ 2006-03-24 17:11 leo.chen 阅读(304) | 评论 (0)编辑 收藏