摘录一些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函数中修改成员变量

 1 #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 }
View Code

相关文章: