这里记录一下在找工作前的复习过程中那些让我怀疑我是不是真的学过计算机的知识点。。
cout << boolalpha << (1 == 2);
输出 false
参考链接: http://www.cnblogs.com/devymex/archive/2010/09/06/1818754.html
const
在 *
的左侧,如 const int *a
或 int const *a
,指针 a
指向的内容为常量
const
在 *
的右侧,如 int* const a
,指针 a
本身为常量
在类中,修饰为 mutable
的成员变量可以被修饰为 const
的成员函数修改
class A { public: mutable int a; void set_a(int n) const { a = n; } }
sizeof()结果由编译时确定,()内代码不被执行
int a = 0; sizeof(a = 1);
a
的值不会被改变
参考链接: http://blog.csdn.net/thisispan/article/details/7456169
int *a[10];//包含十个元素的数组,数组元素是整型指针 int *(a[10]);//同上 int (*a)[10];//指向具有十个整型元素的数组的指针 int (*a)();//指向无参数且返回整型的函数的指针 int (*a[10])();//包含十个元素的数组,数组元素是指向无参数且返回整型的函数的指针 int (**a)[10];//指向一维数组指针的指针,数组具有十个整型元素 int *(*a)[10];//指向一维数组的指针,数组具有十个整型指针元素 int (*(*a)(int))();//指向具有一个整型参数且返回函数指针的函数的指针,返回的函数指针指向无参数且返回整型的函数
int a[5] = {1, 2, 3, 4, 5}; int *p = (int*)(&a + 1); cout << (int)*(p - 1);
5
数组名 a
是指向数组第一个元素的指针, &a
是指向数组的指针,虽然两个指向同一个地址,但是 &a + 1
实际上是将指针向后移动了sizeof(a),也就是20个字节,与 a + 1
移动一个字节不同
在这里 p
类似于二维数组
this
指针实际上是类成员函数的第一个参数,由编译器自动添加,整个生命周期同函数参数一致
删除 vector
等连续空间的容器元素后,相应迭代器会失效
struct
与 class
除了默认访问控制不同以外,其他完全相同。
struct
默认访问控制是 public
, class
默认访问控制是 private
除开父类构造函数,成员变量初始化按照成员变量在类中申明的顺序执行,与初始化列表顺序无关