(待完善...)
一、基本内置类型
C++定义了一组表示整数、浮点数、单个字符和布尔值的算术类型(arithmetic type)。另外,还定义了一种称为void的特殊类型。
C++:算术类型 |
类型 |
含义 |
最小存储空间 |
bool |
布尔型 |
— |
char |
字符型 |
8位 |
wchar_t |
宽字符型 |
16位 |
short |
短整型 |
16位 |
int |
整型 |
16位 |
long |
长整型 |
32位 |
float |
单精度浮点型 |
6位有效数字 |
double |
双精度浮点型 |
10位有效数字 |
long long |
扩展精度浮点型 |
10位有效数字 |
1. 整型
表示
整数、
字符和
布尔值的算术类型合称为整型。
字符类型有两种:
char 和
wchar_t
1.1 带符号和无符号类型
除了bool类型外,整型值可以是
带符号的(signed),也可以是
无符号的(unsigned)。
带符号类型可以表示正数也可以表示负数(包括0),而无符号的只能表示大于或等于0的数。
1.2 整型值的表示
无符号(unsigned)类型中,所有的位都表示数值;有符号(signed)类型的表示一般由灭个编译器决定,但通常是将最高位作为符号位,符号位为1,值就为负数,符号位为0,值就为0或正数。
1.3 整型的赋值
注:超出取值范围的赋值,通常是对该类型的可能取值数目求模,然后取所得值。
2. 浮点型
float、double和long long
二、字符值常量
字面值常量(literal constant)指的是只能它的值来称呼它,并且它的值不能被修改的一类常量。
*只有内置类型存在字面值,没有类类型的字面值。
1. 整型值字面值
整型字面值常量可以用十进制、八进制和十六进制表示。
以0(零)开头的表示八进制,以0x或0X开头的表示十六进制。
*通常在数值后面加上l(字母"L"大写或小写)指定常量为long类型,数值后面添加U或u定义unsigned类型。没有short类型的字面值常量。
2. 浮点字面值
默认的浮点字面值常量为double类型。
3. 布尔字面值
单词
true
和
false
是布尔型的字面值。
4. 字符字面值
可打印的字符型字面值通常用一对
单引号来定义,eg:'a'
在字符字面值前面加L就能够得到wchart_t类型的宽字符字面值。
5. 非打印字符的转义序列
不可打印的实际上是不可显示的字符,即转移字符:
换行符 |
\n |
纵向制表符 |
\v |
回车符 |
\r |
报警(响铃)符 |
\a |
疑问号 |
\? |
双引号 |
\" |
水平制表符 |
\t |
退格符 |
\b |
进纸符 |
\f |
反斜线 |
\\ |
单引号 |
\' |
6. 字符串字面值
字符串字面值常量用双引号括起来的零个或多个字符表示。
*为了兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。
两个相邻的仅由空格、制表符和换行符分开的字符串字面值(或宽字符串字面值),可连接成一个新字符串字面值。
7. 多行字面值
在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。
*反斜线符号必须是该行的尾符号—不允许其后面有注释或空格
三、变量
变量提供了程序可以操作的有名字的存储区。
变量名,即变量的标识符(identifier),可以由字母、数字和下划线组成。变量名必须以字母或下划线开头,并且区分大小写。
*关键字不能用作程序的标识符。除了关键字,C++标准还保留了一组标识符用于标准库。标识符不能包含两个连续的下划线,也不能以下划线开头后面紧跟一个大写字母。
四、const限定符
五、引用
六、typedef名字
作用:①用来定义类型的同义词;②名字可以用作类型说明符
应用目的:①为了隐藏特定类型的实现,强调使用类型的目的;②简化复杂的类型定义;③允许一个类型用于多个目的,同时使得每次使用该类型的目的明确。
七、枚举(enumeration)
八、类类型
每个类都定义了一个
接口(interface)
和一个
实现(implementation)
。
接口由使用该类的代码需要执行的操作组成;实现一般包括该类所需要的数据。
类定义了组成该类型的
数据和
操作。操作称为成员函数,数据称作数据成员。
访问标号(
public、protected、private)控制类的成员在类外是否可访问。
定义变量和定义数据成员的重要区别:一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时,只能指定该数据成员的类型和名字。类通过构造函数控制初始化
struct和class区别:
使用class还是struct关键字定义类,仅仅影响默认的初始访问级别。默认情况下,struct的成员为public,而class的成员为private。
头文件用于声明而不是用于定义。
头文件不应该包含定义的意外情况:
①头文件可以定义类;②头文件可以定义值在编译时就已知道的const对象;③inline函数
预处理器(preprocessor)
预处理器变量两种状态:已定义和未定义。#define指示接受一个名字并定义该名字为预处理器变量。#ifndef指示检测指定的预处理器变量是否未定义。例如:
#ifndef SALESITEM_H
#define SALESITEM_H
// ....
#endif
PS: 欢迎关注微信公众号:开发者小黑屋,分享优质技术干货。