<2014 04 15> C++语言回顾精要(原创By Andrew)

C++语言回顾精要

 

《Visual C++程序设计》张岳新,这本书是很多学校的本科生C++教学用书,今天重新拿来翻了一遍。跟很多国人写的技术书籍一样,写书并不是为了让初学者看懂入门,而是为已经掌握了该知识的人罗列一遍。

 

这本书分为两部分:Visual C++基础&面向对象的程序设计。可以说前半本第一部分就是C语言,因为C++是C的一个超集,其对C的延伸表现为实现面向对象的一些机理和特性。用本书的话来说,就是“封装性、继承与派生性、重载与多态”。

 

第一部分,非OO编程

它对C语言的扩展仅仅体现在以下几个方面:

 

1、关键字++:    (new/delete 动态内存分配成为语言本身的特性 ---》 calloc + 构造与析构函数调用  的一个封装)

        (OO:class  this  friend  virtual  operator /private protected public/ )

        (asm  catch  template throw try 汇编&异常机制)

 

2、C++的I/O流类库:cin>>  cout<< (不属于语言,但太常用,C语言用print函数库)

 

3、作用域部分:变量可以在块内定义(C不可以),以及相关的一些变量作用域的规则

 

4、函数重载:可以定义多个同名函数(C不可以),根据形参个数或类型来实现函数重载

 

5、引用:可以通过&name1 = name来定义引用类型变量,实现函数调用时“自然的”按地址传递变量(C不可以,只能用指针)

 

-----------------------------------------------------------------------------------------

 

第二部分:OO编程特性/方法

C也是可以实现OO编程的,这只是一种观念和方法论,主要的手段是结构体(结构体中的的数据+函数指针等于封装了类)(ooc programming http://ooc-coding.sourceforge.net/)。但是C++在语言本身专门对OO思想进行了设计和延伸。

 

1、C++中,结构体与类的<唯一不同>是成员权限默认不同(类 private  结构体 public)。隐含指针this、构造函数与析构函数。friend友元函数,可以定义之用来在类外访问类内(为了提高程序设计便利)。

 

2、多态性的实现:重载技术(编译时多态:运算符&函数重载)、虚函数(运行时多态:virtual)---->(为了设计通用程序)。

 

3、Other Technologies:

实现类型转换与拷贝的构造函数

多重继承--->冲突、支配规则和赋值兼容性、虚基类

虚函数、纯虚函数、静态成员

const、volatile对象和成员函数

指向类成员的指针

 

一般来说C++相对与Java这样的纯面向对象语言的特点在于:一、需要完全兼容C语言,导致语法历史遗留问题。二、功能过于庞大的OO机制以及一些便利的方法(如第3点Other Technologies),导致头绪过多。

原文地址:https://www.cnblogs.com/andrew-wang/p/3667769.html