《程式設計師面試寶典》讀書筆記 2

2021-07-11 07:28:18 字數 1499 閱讀 4792

#include

int jug(int

x,int

y) else

return

x/y;

}int

sub(int x,int y)

void test(int (*p)(int,int),int

x,int

y)

vector,內部資料結構為陣列。隨機訪問每個元素所需要的時間為常量,在末尾增刪元素與元素數目無關,在中間或者開頭增刪則與元素數目呈線性關係。

vector可動態增刪,記憶體管理自動完成,但我們可用reserve成員函式來管理記憶體。

迭代器在記憶體分配時講失效,指向被刪除元素以後的任何元素的迭代器都將失效。

deque與vector基本相似,主要區別就是deque可以在兩端迅速增刪。

list雙向環狀鍊錶,不能隨機訪問乙個元素,但可以雙向遍歷,在任意位置增刪所需的時間均為常量,增加元素時迭代器不會失效。刪除時也只有指向被刪除的元素的迭代器會失效。

set,按照key來進行公升序儲存元素。

map,按照key,值來進行快速增刪改查,預設公升序。

1.oo程式語言必須提供物件,類,和繼承。

2.對於乙個空類,編譯器預設產生4個函式,預設建構函式,析構函式,拷貝建構函式,賦值函式。

3.靜態成員變數是在這個類中所有物件間共享,如果想限制對靜態成員變數的訪問可以將它宣告為保護型或私有型,不允許用靜態成員變數去存放某乙個物件的資料。

常量必須在類成員初始化列表內初始化,或將其設成static。

4.析構函式可以是內聯函式。

5.將基類的析構函式設為virtual型,則所有派生類的析構函式都將自動變為虛擬型,這保證在任何情況不會出現由與析構函式未被呼叫而導致的記憶體洩露。

6.虛函式採用一種虛呼叫的辦法。特別允許我們呼叫乙個只知道介面而不知道其準確物件型別的函式,但是要建立乙個物件必須知道它的準確型別。

7.實現虛函式需要物件附帶一些額外資訊,以使物件在執行時可以確定該呼叫哪個虛函式。對大多數編譯器來說,這個額外資訊的具體形式是乙個稱為vptr(虛函式表指標)的指標。vptr指向的是乙個稱為vtbl(虛函式表)的函式指標陣列。每個有虛函式的類都附帶有乙個vtbl。當對乙個物件的某個虛函式進行請求呼叫時,實際被呼叫的函式是根據指向vtbl的vptr在vtbl裡找到相應的函式指標來確定的。

8.編寫string類的析勾函式,建構函式和賦值函式。

class mystring

mystring::mystring(const

char*str)

else

}mystring::~mystring()

mystring::mystring&(const mystring&other)

mystring& mysting::operator=(cosnt mystring& other)

《程式設計師面試寶典》讀書筆記 1

1.控制代碼和指標的區別和聯絡?控制代碼和指標是完全兩個不同的概念,控制代碼是個32bit unit,windows系統用控制代碼標記系統資源。指標只標記某個物理記憶體位址。控制代碼實際上是windows系統在記憶體維護的乙個物件記憶體實體地址列表的整數索引。因為windows系統的記憶體管理經常將...

《程式設計師面試寶典》讀書筆記 4

針對繼承方面的知識點在進行簡單的總結 1.公有繼承方式 基類成員對其物件的可見性,公有成員可見而其他成員均不可見。基類成員對其派生類可見性,基類的公有成員和保護成員可見,私有不可見。基類成員對其派生類物件的可見性,基類公有成員可見。2.私有繼承方式 基類成員對其物件的可見性,公有成員可見而其他成員均...

《程式設計師面試寶典讀書筆》讀書筆記7

1.變數的記憶體分配 c語言中有全域性變數,本地變數,靜態變數和暫存器變數。變數的記憶體位址分配是連續的,但是不同變數間的變數確有不同,本地變數和全域性變數分配的記憶體相差十萬八千里,而全域性和靜態變數間記憶體分配是連續的。這是因為全域性和本地變數分配在不同型別的記憶體區域的結果,對於乙個程序的記憶...