1.指针和引用类型注记
- 复杂指针
1.指向成员函数的指针类型
类型T ,函数void a(int);
成员函数指针类型:void (T:: * )(int)
变量声明:void (T:: * a)(int) = nullptr;
因为a的类型本质上是一个指针,所以得先解引用,然后用对象调用,
A b{};
(b.*a)();
- 数组的指针
int (*a)[3];
- 数组的引用
int (&a)[3];
- 引用的注意点
引用不是对象,无法创建指向引用的指针,引用的数组,引用的引用;另外,引用本身的限定符是被忽略的,例如:
int & const a;
中,const忽略,typedef
和模板实参引入的cv限定符也是被忽略。
2.总结
查看一个复杂的类型主要看变量的类型主要看变量右侧是*(指针)还是&(引用);例如:
int (*a)[3];
a是指针,指向数组;
int (&a)[2];
a是引用,绑定一个数组;
void (*a)(void):
a是指针,指向函数;
void (&a)(void);
a是引用,绑定函数;