From Gossip@caterpillar

语言技术:C++ Gossip


C++ 学习笔记 关于 C++ 的历史无须我来介绍了,有兴趣的可以用搜寻引擎来找出一堆谈 C++ 历史的,C++ 是个历久不衰的程式语言,功能强大但入门不易,后期有很多的程式语言致力于拥有 C++ 大部份的功能并去除其不易掌握的部份,即使后期的程式语言如此之多,但 C++ 仍在程式语言工具中占有一席之地。

这是我的 C++ 学习笔记第二个版本,主要的目的是将 之 前 的 .chm 文件 改为网页格式,并重新看看有没有什么语法或观念的错误,也藉此复习一下 C++,文件中所有的范例都是在 Dev C++ 4.9.9.2 中撰写测试。




入门基础
        学习程式语言第一件事,通常就是先作个简单的程式来运行一下,并从了解程式语言的资料型态、变数与流程控制语法开始。
  • 资料型态与变数
        无论如何 先来个 "Hello! World!" 显示一下程式执行结果,增加一点撰写程式的信心!接着就耐心的了解一下 C++ 的资料型态,以认识一下变数、常数。
  • 运算
        程式的目的简单的说就是运算、运算还是运算,加减乘除这类的动作是少不得的,在C++中提供运算功能的就是运算子(Operator)。
  • 流程控制
        流程控制语法是程式设计的基本,藉由各种条件判断与回圈重覆执行语法,您可以令您的程式因应不同的状况而作出不同的回应。

进阶型态
        阵列、字串、指标这几种C++的进阶型态相当常被使用,虽然看似复杂,但彼此之间互有相关。
  • 阵列(Array)
        各种型态的阵列各有其不同的用途,但无论如何,先从基本型态的一维阵列、二维阵列开始认识起。
  • 向量(Vector)
        C++提供了内建阵列的替代型态 vector,vector 可以如同阵列一般的操作,并记得自己的长度资讯,您也可以使用物件的方式来操作 vector 。
  • 字串(String)
        字串的本质是字元阵列,而在C++中还可以使用string类别来表现字串,两者都有了解的必要。
  • 指标(Pointer)
        指标可指向一个记忆体位址,可对物件作间接操作,指标拥有型态,这用来告诉编译器如何解释记忆体空间的内容,以及每一次运算的大小。

函式
        程式中超过两次以上重复使用的程式码,可以考虑将之定义为函式,以便重覆呼叫使用,降低相同程式片段的维护成本。
  • 函式入门
        先简介一些与函式定义相关的几个语法,并谈谈几个变数可视范围的议题。
  • 进阶议题
        递回呼叫、传值、传址、传参考等,这些议题在函式的使用上关乎执行资源的使用与效率问题。

物件基础
        以物件为基础的程式设计,将程式中互动的单元视为一个个的物件。
  • 封装(Encapsulation)
        封装物件资讯是第一步,您要了解如何使用类别定义物件,像是定义物件的属性、行为等等,类别是建构物件 时所依赖的规格书。
        一些有关于指标、运算子重载、特殊型态类别的相关议题。

物件导向
以物件为基础作延伸,多型(Polymorphism)操作为设计时的核心,于执行时期 动态系结(Dynamic binding)以决定物件的行为。
  • 继承(Inheritance)
        您可以继承某个(父)类别的定义并加以扩充,而制订出一个新的(子)类别定义。
        多型操作在物件 导向设计中伴演着极重要的角色,使用的适当与否,足以 影响程式的架构与未来的可维护性。


例外处理(Exception Handling)
        例外(Exception)是程式执行时期可侦测到的异常状况,C++的例外处理包括两部份:例外的丢出(throw)与例外的捕捉(catch)与处 理。


范本(Template)、名称空间(Namespace)
        范本(Template)提供被参数化的型态(Parameterized Types)功能,将型态相依与非型态相依的演算法分离开来;名称空间则提供一个名称管理容器,减低名称冲突的机会发生。


输入/输出
        来看看 C++ 中如何处理输入/输出,像是格式控制、档案 I/O 等。
  • 格式控制与 <<、>> 运算子重载
        首先来看看基本的格式控制,以及 << 、 >> 运算子的重载。
        档案的输出输入是 I/O 的基本,为认识 I/O 的入门必学。


附录