C++基础
2016-02-16 13:43
357 查看
第二章 开始
1.编译器可检查出的错误语法错误:少括号
类型错误指针或引用类型不符,或int a=”jack”;
声明错误:使用未声明的变量或函数
2.初始化与赋值
初始化表示变量创建时赋予其一个初始值
赋值表示将当前值擦除,以新值替代
3.列表初始化{}若存在值的丢失,则编译器报错 int n = {ld};
4.函数体外的变量初始化为0,函数内的无初始化
5.声明和定义
声明规定变量的类型与名字,定义还申请存储空间,有可能为其赋予一个初始值(包含显示初始化的声明即定义)
6.指针与引用
引用是变量的别名,所以引用不是对象,必须初始化,而指针不需要。
指针可以指向不同的对象,而引用绑定后便不能更改。
const int &r=40; 常量引用
二者都需要对象类型严格匹配
把int型变量赋给指针会报错
7.const(顶层)对象必须初始化
const int *const p = &i;
第一个const为底层,第二个为顶层
8.常量表达式:值不会改变并且在编译过程就能得到计算结果的表达式
constexpr int m=20;
constexpr int c=m+1;
constexpr int sz=size(); //size()必须是constexpr函数(足以简单,以便编译时即可得到结果)
constexpr int *p=nullptr; //此时p为顶层const,即指向int的常量指针
9.类型别名
typedef double wage;
typedef wage *p; //p为指向double类型的指针
using wage=double; //相同含义
10.auto 类型说明符
必须有初始值以便推导,且一条声明语句各变量类型相同
auto v = xx; 会将顶层const丢失,const auto v =xx;
添加 auto &p = xx; 引用和指针会将顶层const保留
11.decltype 类型指示符(推导)
decltype(*p|a=b) r; 此时r为引用需初始化
decltype((i)) r; 也为引用
decltype(i) n; int类型