摘录一些C++面试常考问题,写一些自己的理解,花了挺长时间的,作图是真的累,欢迎来摘果子。
static关键字
用于声明静态对象;
静态函数只在本文件可见。(默认是extern的)
全局静态对象:全局静态对象,存储在全局/静态区,作用域整个程序,在程序结束才销毁;
局部静态对象:在函数内部加上static声明的变量,在首次调用时初始化,然后一直驻留在内存,作用域是该函数,可用于函数调用计数(primary有例子),程序结束释放;
静态数据成员:归属于类,类对象共享,类外初始化,类对象可访问;
静态函数成员:归属于类,只能访问静态数据成员。
const 关键字
核心功能:限定只读
const T var; 声明常量,存储在常量区;
const T* p : 不可通过p指针修改对象值;T * const p : 常量指针,指针不可被赋值/地址不可改变。
const T function(const T, const T*, T* const, const T&) const &/&& {…;}
限定返回值为常量、常量形参、指针常量、常量指针、常引用、防止对象属性被改变(对象只读)STL源码大量使用
如何突破const的限制?mutable 在const函数中修改成员变量
View Code1 #include <iostream> 2 using namespace std; 3 4 class Test 5 { 6 public: 7 mutable int a; //突破限制 8 int change(int b) const; 9 }; 10 11 int Test::change(int b) const 12 { 13 a = b; 14 return a; 15 } 16 17 int main() 18 { 19 Test t; 20 t.a = 10; 21 cout << t.change(20) << endl; 22 return 0; 23 }