一點兒小結

2021-06-07 02:03:03 字數 1341 閱讀 6698

學習《c++primer》看到的,做點兒筆記吧

1、通常,函式不應該有vector或其他標準庫容器型別的形參。呼叫含有普通的非引用vector形參的函式會複製vector的每乙個元素,所以,從避免複製vector的角度出發,應考慮將形參宣告為引用。而實際上,c++程式設計師傾向於通過傳遞指向容器中需要處理的元素的迭代器來傳遞容器。

2、陣列形參的定義,下面三種是等價的:

void print(int *)

void print(int ) 

void print(int [10]) 

上面三種的定義,其形參都是int *,一般來說,將其直接定義為指標要比使用陣列更好。

3、當編譯器檢查陣列形參關聯的實參時,他只會檢查實參是不是指標、指標型別、陣列元素的型別是不是匹配,而不會檢查陣列的長度,所以沒有必要在形參中制定陣列長度,那樣也容易引起誤解;

4、如果通過引用傳遞陣列,那麼編譯器不會將陣列實參轉化為指標:

void print(int (&array) [10]) 

int main()

; int k[10]=;

print(&i);// error

print(j);// error

print(k);// ok

return 0;

}

5、多維陣列的傳遞

void print(int (matrix *)[10], int rowsize)

上式中,將matrix宣告為指向含有10個int型元素的陣列的指標。

同樣也可以以陣列語法形式定義

void print(int matrix[10], int rowsize)

這條語句把matrix宣告為二維陣列的形式。實際上,形參是乙個指標,與一位陣列一樣,編譯器忽略掉第一維的長度,所以最好不要把它包含在形參中;

6、編譯器隱式的將類內定義的成員函式當做內聯函式;

7、每個成員函式都有乙個額外的、隱含的的形參將該成員函式與呼叫該函式的類物件**在一起;

8、每個成員函式(static函式除外)都有乙個額外的、隱含的的形參this,在呼叫時成員函式時,形參this初始化為呼叫函式的物件的位址。

total.same_isbn(trans);
編譯器這樣重寫這個函式呼叫

sales_item::same_isbn(&total,trans);

9、由編譯器建立的預設建構函式通常稱為合成的預設建構函式:合成的預設建構函式一般僅適用於包含類型別成員的類。而對於含有內建型別或者復合型別成員的類,則通常應該定義他們自己的預設的建構函式初始化這些成員;

C char 的一點兒理解

理解是就是char 相當於字串陣列,我以往糾結於該用 arr還是 arr還是 arr 還是 arr 對於 arr而言 arr代表陣列的最開頭,也就是第乙個字串的內容。arr代表什麼,不知道,這麼用會報錯。簡單的來說arr 0 代表第乙個字串的值,實際指向的整個 arr的首位址,如果用printf之類...

技術人的一點兒思考

作為乙個技術人,雖然更多的是與機器和 打交道,但仍然也會有不少感觸和思考。安安靜靜的思考,平平淡淡的文字,寫下來,對自己也是一種總結和提公升,如果有幸能讓你看到,那,還真的很有緣。如果能帶給你啟發,就再好不過啦,哪怕只有一點點 別害怕技術焦慮 技術領域的迭代越來越快,新技術目不暇接。新的技術領域 新...

一點兒胡說八道

最近的工作,有點兒四不像,又不是完全在寫 也不是完全在做需求和業務,兩者都有一點兒,還得抽時間研究點兒不同技術的可用性。這讓我想起幾點事兒 第一 我好像慢慢過了建立程式思維的過程,就是大學裡學演算法 學資料結構,用程式來寫個數學分段函式 函式的過程。語言的壓力越來越小,新語言如果了解到它的特性,大腦...