转载

关于面试,那些我完全不知道的知识

这里记录一下在找工作前的复习过程中那些让我怀疑我是不是真的学过计算机的知识点。。

C/C++

cout的格式化输出

cout << boolalpha << (1 == 2); 

输出 false
参考链接: http://www.cnblogs.com/devymex/archive/2010/09/06/1818754.html

const与指针

const* 的左侧,如 const int *aint const *a ,指针 a 指向的内容为常量

const* 的右侧,如 int* const a ,指针 a 本身为常量

mutable与const

在类中,修饰为 mutable 的成员变量可以被修饰为 const 的成员函数修改

class A {  public:   mutable int a;   void set_a(int n) const {     a = n;   } } 

sizeof

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指针

this 指针实际上是类成员函数的第一个参数,由编译器自动添加,整个生命周期同函数参数一致

容器与迭代器

删除 vector 等连续空间的容器元素后,相应迭代器会失效

struct与class

structclass 除了默认访问控制不同以外,其他完全相同。

struct 默认访问控制是 publicclass 默认访问控制是 private

构造函数初始化列表

除开父类构造函数,成员变量初始化按照成员变量在类中申明的顺序执行,与初始化列表顺序无关

未完。。。

正文到此结束
Loading...