前缀 | 类型 | |
---|---|---|
u | Unicode 16位 | char_t |
U | Unicode 32位 | char32_t |
L | 宽字符 | wchar_t |
u8 | UTF-8(仅用于字符串字面常量) | char |
C++11新标准中
用花括号出初始化变量有广泛的应用,称作列表初始化
int units_sold = 0;
int units_sold = {0};
int units_sold {0}; 用列表初始化且初始值存在丢失信息的风险时,编译器将报错
int units_sold (0);
最好在开始时初始化每一个内置类型的变量,保证安全
C++支持分离式编译,声明和定义被明显区分开来
在不同的文件中,若要使用另一个文件定义的变量时,则使用声明 extern
作为该文件中的全局变量时,若试图初始化则会抵消 extern 变成定义,在函数内试图对其初始化会引发错误
为了提高代码的可读性
- 标识符要能体现实际含义
- 变量名一般用小写字母
- 用户自定义的类名一般以大写字母开头
- 如果标识符由多个单词组成,则单词之间应该有明显区分
用户自定义的标识符中不能连续出现两个连续下划线,也不能以下划线紧连大写字母开头。
引用(reference)
int ival = 1024;
int &refVal = ival; //refVal 指向ival(是ival的另一个名字)
int &refVal2; //报错
定义引用时,引用即和初始值绑定。
int &refVal = 10; //错:引用类型的初始值必须是一个对象引用类型也要相同
在新标准的C++11中,最好用 nullptr 来生成空指针,尽量避免使用 NULL。
在使用指针变量时,初始化是有必要的
void* 指针,
可以用来与别的指针进行比较作为函数的输入或输出或赋给另一个指针,但不能直接操作指针的对象,因为不知道该对象的类型,无法确定操作集。
Tips:面对一条比较复杂的指针或引用的声明语句时,从右向左阅读有助于弄清其真实含义
const 的引用:
const int c1 = 1024;
const int &r1 = c1; //正确:引用及其对应的对象都是常量。
int i = 42;
const int &r2 = i; //合法,可引用而 i 可通过其他途径修改
要想存放常量对象的地址,只能使用指向指针常量的指针。
常量指针
类似于常量引用
const 指针
int *const curErr = &errNumb //curErr将一直指向 errNumb.
const double *const pip = π //pip是一个指向常量对象的常量指针
C++ 11 新标准
constexpr 声明的常量表达式必须用常量表达式初始化
constexpr 定义指针时,对象地址一定要是一个固定值
constexpr 把它所定义的对象置为了顶层 const
类型别名
传统: typedef double wages; //wages 与 double 同义
typedef wages base *p; //base 与 double 同义,p与double*同义
别名声明
using SI = Sales_item;
auto 类型说明符
通过初始值让编译器去推算变量的类型.
decltype
decltype(f()) sum = x; //sum的类型就是函数 f 的返回类型.
头文件预处理器
#define
#ifdefine
#ifndefine
#end if
#ifndef SALES_DATE_H