6、應用場景
7、struct和class的區別
8、define和const的區別(編譯階段、安全性、記憶體占用等)
9、在c++中const和static的用法(定義,用途)
10、const和static在類中使用的注意事項(定義、初始化和使用)
11、計算下面幾個類的大小
12、c++的stl介紹
13、stl原始碼中的hash表的實現
14、stl中unordered_map和map的區別
15、stl中vector的實現
16、c++中的過載和重寫(覆蓋)的區別:
17、c++記憶體管理
18、指標和陣列的對比
19、呼叫函式申請空間
在使用的時候new和delete搭配使用,malloc和free搭配使用
struct和class都可以自定義資料型別,也支援繼承操作
struct a
;classb:a
;//private繼承
struct c:b
;//public繼承
//例子
#include
using
namespace std;
classa}
;struct b: a};
class
c: b
;int
main()
static定義靜態變數,靜態函式
static靜態成員變數:
//***********例子*******************//
class
base
;有疑惑????????????????
//??????????????????????????????
//*****************例子***********************
class
base
;
static靜態成員函式
const成員變數
const成員函式
const static如果要想成員變數在整個類中都是恆定的常量,應該用類的列舉常量或者static const。
在類中進行宣告,在類外進行初始化(類似於類的靜態常量)
類本身沒有大小,這裡的類的大小是指:類的物件所佔的大小。
#include
using
namespace std;
class
a//普通成員函式
void
fun()}
;//普通資料成員
classb;
//虛函式
classc}
;//結構體對齊原則
classd}
;int
main()
classa}
;問:a a =
1;是否正確, 如果正確, 那麼它呼叫了哪些函式?,
這裡會進行隱式轉化 a a(1
).implicit
正確這類題目更常見的是在基類和子類有不同實現方法。(虛函式相關,例子很多,不多說了)
hashtable是採用開鏈法來完成的(vector + list)
vector是乙個動態陣列,底層實現是一段連續的線性記憶體空間。
c++記憶體分為:棧、堆、自由儲存區、全域性/靜態儲存區、常量區。
堆和自由儲存區的區別
1、字元陣列的內容可以改變,字元指標的內容不可以改變
char a=
"hello";a[
0]='l'
;cout << a << endl;
char
*p =
"world"
;//p指向常量字串p[0
]='h';
//執行出錯
2、字元陣列之間不能賦值,不能直接用比較運算子直接比較,若進行賦值呼叫 strcpy() 函式,若進行比較呼叫 strcmp() 函式;
char a=
"hello"
;char b[10]
;strcpy
(b, a)
;//不能用b = a;if(
strcmp
(a, b)==0
)//不能用a==b
cout <<
"endl"
;
3、運算子 sizeof 可以計算出字元陣列的容量,但是計算字元指標時,得到的是指標變數所占用的空間,而不是指標所指向空間的大小
char a=
"hello"
;char
*p = a;
cout <<
sizeof a << endl;
//6位元組
cout <<
sizeof p << endl;
//8位元組(64位)
4、當陣列作為引數傳遞時,陣列會自動退化為指標
void
fun(
char a[
100]
)
1、指標作為函式的引數傳遞
void
getmemory
(char
*p,int num)
void
test
(void
)
上述程式出錯的原因在於:呼叫函式時,傳遞的是變數的值「值傳遞」,在 getmemory 函式內部改變的是引數 p 的副本,並不會影響引數 p 本身,也就是說 str 並沒有獲得記憶體。這樣程式最終會導致記憶體洩漏,呼叫 getmemory 函式多少次,就會出現多少次記憶體洩漏,因為在函式內部只動態申請了記憶體,並沒有用 free 釋放掉動態記憶體空間。
如果想要通過這種方式申請空間,將 getmemory 函式的形參改為「指向指標的指標」
void
getmemory2
(char
**p,
int num)
void
test2
(void
)
SVN與GIT區別對比
1 svn優缺點 優點 1 管理方便,邏輯明確,符合一般人思維習慣。2 易於管理,集中式伺服器更能保證安全性。3 一致性非常高。4 適合開發人數不多的專案開發。缺點 1 伺服器壓力太大,資料庫容量暴增。2 如果不能連線到伺服器上,基本上不可以工作,看上面第二步,如果伺服器不能連線上,就不能提交,還原...
post和get區別對比
post和get區別 標準答案 get在瀏覽器回退時是無害的,而post會再次提交請求。get產生的url位址可以被bookmark,而post不可以。get請求會被瀏覽器主動cache,而post不會,除非手動設定。get請求只能進行url編碼,而post支援多種編碼方式。get請求引數會被完整保...
axios 和 fetch 區別對比
axios axios then function response catch function error axios 是乙個基於promise 用於瀏覽器和 nodejs 的 http 客戶端,本質上也是對原生xhr的封裝,只不過它是promise的實現版本,符合最新的es規範,它本身具有以下...