仅以精简的内容供查询复习
一、C++语法
1、引用
引用:A reference is an alias for another variable. (引用就是另一个变量的别名)
int x; int& y = x;
引用的性质:1)通过引用所做的读写操作实际上是作用于原变量上
2)引用必须在声明的时候初始化
3)引用一旦初始化,引用名字就不能再指定给其它变量
注意:在被调函数中改变引用变量的值,则改变的是实参的值
2、指针
空指针:C++11中引入保留字“nullptr”作为空指针
动态内存分配/管理:
1)c++中通过new运算符申请动态内存
new <类型名> (初值); //申请一个变量的空间 new <类型名>[常量表达式]; //申请数组
如果申请成功,返回指定类型内存的地址
如果申请失败,抛出异常,或者返回空指针(nullptr)(C++11)
2)动态内存使用完毕后,要用delete运算符来释放
delete <指针名>; //删除一个变量/对象 delete [] <指针名>; //删除数组空间
3、列表初始化
1) Direct list initialization (直接列表初始化)
int x{4}; // int x = 4; int ary[]{1,2,3}; // int ary[] = {1,2,3}; char s[]{"Hellow"}; // char s[] = "Hellow";
2) Copy list initialization (拷贝列表初始化)
int x = {4}; int ary[] = {1,2,3}; char s[] = "Hellow" // 此处{}可以省略
注意:列表初始化不允许“窄化”,即不允许丢失数据精度的隐式类型转换
4、类型转换
隐式类型转换(尽量避免) 与 显示类型转换
c风格:(type) value
c++:static_cast<type> value
int a = (int)2.5; // c static_cast<double>(1 / 2); // c++
5、简化的c++内存模型
1)Stack(栈)
自动分配与释放
2)Heap(堆)
由程序员分操作,不主动释放则程序结束时由OS回收
3)Global/Static(全局/静态区)
4)Constant(常量)
6、常量与指针
常量:初始化后不可改变
指针:指针是一个地址,这些数据就叫做“指针所指的数据”或者“指针指向的数据”
Pointer to Constant (常量指针/常指针)
指针所指向的内容不可以通过指针的间接引用(*p)来改变
const int x = 1; const int* p1 = &x; //指针 p1的类型是 (const int*) *p1 = 10; // Error!
Pointer Constant (指针常量)
指针本身的内容是个常量,不可以改变
int x = 1, y = 1; int* const p2 = &x; //常量 p2的类型是 (int*) *p2 = 10; // Okay! x=10 p2 = &y; // Error! p2 is a constant
7、Unary Scope Resolution (一元作用域解析运算符)
局部变量名与全局变量名相同时,可使用 :: 访问全局变量
#include <iostream> int v1 = 10; int main() { int v1 = 5; std::cout << "local variable v1 is " << v1 << std::endl; std::cout << "global variable v1 is " << ::v1 << std::endl; return 0; }