1 指针
1.1 指针定义
string *ps1,ps2;
stiing *ps1,*ps2;
1.2 typedef
用一种新类型名来替换新的类型名,也就是用类型起了一个别名。
typedef 类型名 标识符
1.3 void* 指针
C++ 提供一种特数的指针类型 void* ,它可以保存任何类型对象的地址:
- 只能进行有限个操作
- 与另一个指针进行比较
- 向函数传递 void* 指针或从函数返回 void* 指针
- 给另外一个void* 指针赋值
- 不允许使用void * 指针操作它所指向的对象
1.4 指向指针的指针
1.5 函数指针
- 示例
-bool (*pf)(int a,int b)
2 引用
- 定义
引用就是对象的另外一个名字,所谓的引用。其实就是一种特数的变量,这个变量的内容是绑定在这个引用上面 的对象的地址,而使用这个变量时,系统就会自动根据这个地址去找到它绑定的变量。然后再对变量进行操作,所以本质上来说,引用其实还是指针,只不过这个指针是不能修改的,任何对它的操作都会发生再这个指针所指向的地方,而不是这个指针身上。所以说,C++中规定了一旦定义了引用,就必须把它跟一个变量绑定起来,并且不能修改这个绑定。 - 引用跟指针的区别
- 引用不能为空,当引用被创建的时候,必须被初始化,而指针可以为空。可以在任何时候被初始化。
- 一旦一个引用被初始化指向一个对象,它就不能被改变对另外一个对象的引用。指针可以在 任何时候指向另外一个对象。
- 不可能又NULL引用,必须确保引用是与一块合法的内存关联
- sizeof(引用)得到的是引用的值,sizeof(指针)是指针本身的大小
- ++ 的意思不一样
2.1 const引用
2.2 引用作为类的数据成员
1.不能直接在构造函数里初始化,必须用到初始化列表
2. 凡是有引用类型的数据成员的类,必须定义构造函数