
本文共 2098 字,大约阅读时间需要 6 分钟。
基本内置类型
算术类型分为两类:
整型(包括字符和布尔类型在内)和浮点型。
C++:算术类型 | ||
---|---|---|
类型 | 含义 | 最小尺寸 |
bool | 布尔类型 | 未定义 |
char | 字符 | 8位 |
wchar_t | 宽字符 | 16位 |
char16_t | Unicode字符 | 16位 |
char32_t | Unicode字符 | 32位 |
short | 短整型 | 16位 |
int | 整型 | 16位 |
long | 长整型 | 32位 |
long long | 长整型 | 64位 |
float | 单精度浮点型 | 6位有效数字 |
double | 双精度浮点型 | 10位有效数字 |
long double | 扩展精度浮点数 | 10位有效数字 |
类型转换
将对象从一种给定的类型转换为另一种相关类型。
字面值常量
- 整型和浮点型字面值
以0开头的整数代表八进制数,
以0x或0X开头的代表十六进制数。
浮点数字面值表现为一个小数或以科学计数法表示的指数。 - 字符和字符串字面值
'a'//字符字面值"Hello World"//字符串字面值
- 转义序列
换行符 \n
横向制表符 \t
报警符 \a
纵向制表符 \v
退格符 \b
双引号 "
反斜线 \
问号 ?
单引号 ’
回车符 \r
进纸符 \f
变量
变量定义的基本形式是:首先是类型说明符,随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。
当对象在创建时获得了一个特定的值,我们说这个对象被初始化了。
列表初始化
int units_sold=0;int units_sold={ 0};int units_sold{ 0};int units_sold(0);
在C++11标准中,用花括号初始化变量得到全面应用。
这种初始化的形式被称为列表初始化。
默认初始化
如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”。
每个类各自决定其初始化对象的方式。而且,是否允许不经初始化就定义对象也由类自己决定。
变量声明和定义的关系
为了允许程序拆分成多个逻辑部分来写,C++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译。
为了支持分离式编译,C++语言将声明和定义区分开来。
如果想要声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显示地初始化变量。
标识符
- 标识符要能体现实际含义
- 变量名一般用小写字母,如index,不要使用Index或INDEX
- 用户自定义的类名一般以大写字母开头,如Sales_item。
- 如果标识符由多个单词组成,则单词间应有明显的区分,如student_loan或studentLoan不要使用studentloan。
复合类型
C++的复合类型:引用和指针
引用为对象起了另一个名字,引用类型引用另一种类型。
定义引用的时候,程序把引用和它的初始值绑定,而不是把初始值拷贝给引用。
指针是指向另一种类型的复合类型。
- 允许对指针赋值和拷贝。
- 指针无需在定义时赋初值。
指针的值应属以下4种状态之一:
- 指向一个对象
- 指向紧邻对象的下一个位置。
- 空指针,意味着指针没有指向任何对象。
- 无效指针,也就是上述情况之外的任意值。
const限定符
默认状态下,const对象仅在文件内有效
为了解决多文件共享问题,办法是,对于const变量,不管是声明还是定义都添加extern关键字,这样只需要定义一次就可以了。
C++11新标准规定 ,允许将变量声明成constexpr类型以便由编译器来验证变量值是否是一个常量表达式。
类型别名
传统的方法是使用关键字typedef
新标准规定了一种新方法别名声明:
using SI = Sales_item;//SI是Sales_item的同义词
auto类型说明符
C++11标准引入了auto类型说明符,用它就能让编译器替我们分析表达式所属的类型。
decltype类型指示符
它的作用是选择并返回操作数的数据类型。在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。
自定义数据结构
Sales_item的初步定义如下
struct Sale_data{ std::string bookNo; unsigned units_sold=0; double revenue=0.0;};
补充一点:C语言的关键字struct表示结构体,只能有数据成员。
而C++的关键字struct表示类可以有成员函数,它与class的区别在于class的默认访问级别是private而struct的默认访问级别是public。
预处理器概述
确保头文件多次包含仍能安全工作的常用技术是预处理器,它由C++语言从C语言继承而来。
C++程序还会用到的一项预处理功能是头文件保护符,头文件保护符依赖于预处理变量。预处理变量有两种状态:已定义和未定义。
#define指令把一个名字设定为预处理变量,
#ifdef当且仅当变量已定义时为真,
#ifndef当且仅当变量未定义时为真。
#endif执行到endif为止。
预处理器变量无视C++语言中关于作用域的规则。
发表评论
最新留言
关于作者
