第2部分 C/C++基础
知识
1. C++中的基本数据类型:
2. C++中的整型:
3. C++中的常见常量
常量按照数据类型的不同分为整型常量,浮点型常量,字符型常量,还有字符串常量,转义字符常量和地址常量。
整型常量可以有二进制,八进制和十六进制三种表示形式。加上L或U来表示长整型或者无符号型。
浮点型常量,float型需要添加后缀f或F。浮点数只有一种进制(十进制),所有的浮点常数都是默认为double的。
字符型常量,\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。
字符串常量,这个是从C中继承而来的。
转义字符常量,\x,\n,\b,\r,\n
地址常量
4. 常量和变量的区别
(1)常量的值不可修改,任何尝试修改变量的操作都会导致编译错误。而变量可以通过赋值来改变。
(2)常量定义之后就不能被修改,所以在定义时必须初始化。
(3)常量的地址不允许赋值给非常量指针
(4)常量在编译的时候,可以以立即数形式编译进指令,比起内存的变量执行效率更高。常量折叠
(5)常量本省没有地址属性(除字符串常量之外),而变量有地址属性。所以,常量只能做右值,变量既能右值也能左值。
5. 操作符优先级
在C/C++中,操作符的优先级对于表达式的运算次序有重要的影响。
在所有的优先级中,有三个是从右至左结合的:单目运算符,条件运算符和赋值运算符。其他都是从左至右结合的。
6. 引用
引用是C++的一个操作符。只能定义其他类型的引用,而不能定义引用类型的引用。
引用必须初始化。普通引用必须使用变量进行初始化,而不能使用字面值。
const引用是指向const对象的引用。const引用必须被定义为const类型。
7. C++中多态
动态多态:继承机制和虚函数实现
静态多态:模板
静态多态为C++引入泛型的概念。
函数多态:重载
8. 面向过程,面向对象,泛型编程
这是3种不同的程序设计方法。
面向过程是一种以模块为中心的编程思想。
“面向过程” 所采用的是自顶向下、逐步求精的开发方法,先将一个复杂的大系统分解为若干个可独立设计的子模块,并明确各模块间的组装与交互机制,在各个子模块设计完成之后将这些子模块组合起来,形成最终的大系统。系统的模块化设计,目前还没有一个完全机械式的形式化的方法。
“面向对象” 的特色是程序围绕被操作的对象来设计,不是围绕操作本身。所以面向对象里有几个新的概
念,这就是对象、 方法、类、事件、属性等。 面向对象方法是一种把面向对象的思想应用于软件开发过程中,知道开发活动的系统开发方法,简称OO(Object-Oriented方法,)是建立在“对象”概念基础上的方法学。它的基本思想是把软件系统分解成一个个的对象,以对象为中心,以类和继承为构造机制来认识、理解、刻画客观世界和设计、构建相应的软件系统。
泛型程序设计 是以类型需求为中心的程序设计方法。就是说要将程序写得尽可能通用,可以适合多种数据类型的操作,同时并不损失效率。泛型程序设计的抽象机制是直接建立在需求分析上,从而易于同需求分析阶段更好地衔接。泛型程序设计的过程就是发现类型需求、分析类型需求之间的关系,并运用这种类型需求关系实现系统结构和逻辑的过程[3]。
泛型设计的目标是将算法从对象的行为中分离出来, 做到算法的设计与数据结构无关, 从而实现算法软件的复用。泛型设计必须创新一种技术, 将数据结构与算法之间的强祸合关系削弱为弱祸合关系,从而解决算法软件的复用问题。
泛型程序设计有三个非常重要的概念,也是泛型程序设计的基石,它们是概念(Concept)、模型(Modeling)、强化(Refinement)。概念是一组能支持相 应的操作类型数据的定义,这些操作与具体的数据类型无关,也可以认为它是一组类型的集合。当某个类型满足某个“概念”的所有条件,称此模型为该“概念”的“模型”。如果概念 C2 拥有概念 C1 的所有功能,一个并且加上其他功能,便说C2是C1的一个强化。它们三者之间的关系如图 1 所示:
1. C++中的基本数据类型:
2. C++中的整型:
3. C++中的常见常量
常量按照数据类型的不同分为整型常量,浮点型常量,字符型常量,还有字符串常量,转义字符常量和地址常量。
整型常量可以有二进制,八进制和十六进制三种表示形式。加上L或U来表示长整型或者无符号型。
浮点型常量,float型需要添加后缀f或F。浮点数只有一种进制(十进制),所有的浮点常数都是默认为double的。
字符型常量,\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。
字符串常量,这个是从C中继承而来的。
转义字符常量,\x,\n,\b,\r,\n
地址常量
4. 常量和变量的区别
(1)常量的值不可修改,任何尝试修改变量的操作都会导致编译错误。而变量可以通过赋值来改变。
(2)常量定义之后就不能被修改,所以在定义时必须初始化。
(3)常量的地址不允许赋值给非常量指针
(4)常量在编译的时候,可以以立即数形式编译进指令,比起内存的变量执行效率更高。常量折叠
(5)常量本省没有地址属性(除字符串常量之外),而变量有地址属性。所以,常量只能做右值,变量既能右值也能左值。
5. 操作符优先级
在C/C++中,操作符的优先级对于表达式的运算次序有重要的影响。
在所有的优先级中,有三个是从右至左结合的:单目运算符,条件运算符和赋值运算符。其他都是从左至右结合的。
6. 引用
引用是C++的一个操作符。只能定义其他类型的引用,而不能定义引用类型的引用。
引用必须初始化。普通引用必须使用变量进行初始化,而不能使用字面值。
const引用是指向const对象的引用。const引用必须被定义为const类型。
7. C++中多态
动态多态:继承机制和虚函数实现
静态多态:模板
静态多态为C++引入泛型的概念。
函数多态:重载
8. 面向过程,面向对象,泛型编程
这是3种不同的程序设计方法。
面向过程是一种以模块为中心的编程思想。
“面向过程” 所采用的是自顶向下、逐步求精的开发方法,先将一个复杂的大系统分解为若干个可独立设计的子模块,并明确各模块间的组装与交互机制,在各个子模块设计完成之后将这些子模块组合起来,形成最终的大系统。系统的模块化设计,目前还没有一个完全机械式的形式化的方法。
“面向对象” 的特色是程序围绕被操作的对象来设计,不是围绕操作本身。所以面向对象里有几个新的概
念,这就是对象、 方法、类、事件、属性等。 面向对象方法是一种把面向对象的思想应用于软件开发过程中,知道开发活动的系统开发方法,简称OO(Object-Oriented方法,)是建立在“对象”概念基础上的方法学。它的基本思想是把软件系统分解成一个个的对象,以对象为中心,以类和继承为构造机制来认识、理解、刻画客观世界和设计、构建相应的软件系统。
泛型程序设计 是以类型需求为中心的程序设计方法。就是说要将程序写得尽可能通用,可以适合多种数据类型的操作,同时并不损失效率。泛型程序设计的抽象机制是直接建立在需求分析上,从而易于同需求分析阶段更好地衔接。泛型程序设计的过程就是发现类型需求、分析类型需求之间的关系,并运用这种类型需求关系实现系统结构和逻辑的过程[3]。
泛型设计的目标是将算法从对象的行为中分离出来, 做到算法的设计与数据结构无关, 从而实现算法软件的复用。泛型设计必须创新一种技术, 将数据结构与算法之间的强祸合关系削弱为弱祸合关系,从而解决算法软件的复用问题。
泛型程序设计有三个非常重要的概念,也是泛型程序设计的基石,它们是概念(Concept)、模型(Modeling)、强化(Refinement)。概念是一组能支持相 应的操作类型数据的定义,这些操作与具体的数据类型无关,也可以认为它是一组类型的集合。当某个类型满足某个“概念”的所有条件,称此模型为该“概念”的“模型”。如果概念 C2 拥有概念 C1 的所有功能,一个并且加上其他功能,便说C2是C1的一个强化。它们三者之间的关系如图 1 所示: