今天开始把C++的书重新拿出来仔细看了看,在这里记些笔记,主要记一些以前没太注意的内容和一些重新体会到的内容。
1、核心概念:数据封装、继承、多态性、泛型编程。
2、常量是可以有后缀的,不过都可以省略,包括U(无符号整数)、L(长整数)、F(浮点)、LF(double,long double)。
3、指针
int c = 10;
int *p;
p = &c;
cout << p; //c的地址
cout << *p; //100,c的值
cout << &p; //p的地址
*p = 100; //等价 c = 100;
4、const 和指针
(1) const int *p = &a; a的值不能变
(2)int * const p = &b;
p只能指向b的地址,p单元中的值(b的地址)不能变
(3) const int * const t = &a;都不能变
5、引用
int a = 1
int &ra1 = a; //ra1和a等价
//int &ra2 = 10; ERROR
const int &ra2 = 10;//个人感觉没什么意义,和 const int ra2 = 10;没什么区别
6、二维数组排列方式Arr[2][3]
Arr[0][0] Arr[0][1] Arr[0][2] Arr[1][0] Arr[1][1] Arr[1][2]
7、数组和指针
int arr[] = {5,4,3,2,1};
int *p = arr; //无&
cout << *p; //等价cout<<p[0]; 结果为5
cout << *(p+1);//等价cout<<p[0+1]; 结果为4
cout << (*p + 1);//等价cout<<p[0]+1;结果为6
8、结构指针
struct1 s1;
struct *p = s1;
(*p).id = 111;//<=> p->id = 111;
//*p.id = 111;//ERROR
9、类型转换
(1) a = static_cast<int >(b);
(2) const int b = 1;
a = const_cast<int>(b);
(3) dynamic_cast<类型名>(表达式);
(4)reinterpret_cast<类型名>(表达式);
int a,*p = &a;
double *q;