從C語言到C (一)

2021-07-24 17:51:37 字數 3070 閱讀 5139

1.輸入輸出流

using std::cout;//標準輸出流

using std::endl;//換行

cout << em1.t->a;

cout << endl;

2.結構體的宣告

在c++裡,不需要加struct

3.類的定義

類名稱前面加c,類成員前面加m_如果不加關鍵字public和「:」,預設為「private」,即如果你在main裡面用.呼叫他,就會報錯

4.類的成員函式

成員函式呼叫成員變數時,不需要成員變數的宣告public。如果函式前面沒有public,也不能被外界訪問。函式不增加類的大小,即他儲存在記憶體裡。呼叫函式時,必須用點運算子取他。

class cbox

double cbox::vol()//型別 類名稱 作用域解析運算子 函式名稱 {}

5.內聯函式

編譯器暗中講定義在類中的函式作為內聯函式對待,如果函式宣告在外面,加上關鍵字inline即可。

內聯函式首先要保證不會出現變數的作用域等方面的問題,其次適合於短小的函式。

內聯函式是指用函式體**去替代函式的呼叫,從而提高執行速度。

6.類建構函式

用來給類初始化。不允許有返回值,void也不行。命名固定,必須和類名稱相同,然後加()

程式如下:

class cbox

} int main()

也可以在建構函式時寫int a=1;給他乙個預設值,然後初始化時就寫cbox box1;就行了,不過你寫這個了就不能再寫預設建構函式了。

7.預設建構函式cbox()

定義了這個,你就可以不賦初始值了。然後這個需要很長的描述就不說了,你可以看visual 2008入門經典,清華大學出版社的,304面,我就是看這個的。

8.另一種類建構函式形式

cbox(int a ) ://加冒號

m_a(a)//賦值a,不需要;並列用,

{}//函式body

9.public 和 private

為了保證類的資料安全,使用private限制,而可以通過構造乙個public的函式,用該函式修改private的值,來實現介面的作用。在沒有給出乙個不給private的理由前,最好用private.private最好放下面。

10.友元函式,不屬於類,卻定在類中,成為內聯函式,如果不在類中定義則不是。不屬於類,至少擁有一些特殊許可權。前面加friend.

class cbox

private:

int a;

friend double bc(cbox box);

double bc(cbox box)//不同於非友元函式,前面不需要是(inline) double cbox::

return box.a;

11.如果元素裡沒有指標和陣列,可以使用系統的預設複製函式(其實就是你不用去寫了)。

cbox box1(1);

cbox box2=box1;

12.this指標。該指標指向呼叫函式時使用的物件,實際上this不寫也可以。(這句話難理解)

class cbox

public:...............

private:............

public:

int compare(cbox boxx)

return this->vol()>boxx.vol();//比較呼叫這個函式的類的體積和這個函式的引數的類的體積的大小,去掉this也行的,預設vol()是這個類的vol()

13.析構函式

析構函式(destructor) 與建構函式相反,當物件結束其生命週期時(例如物件所在的函式已呼叫完畢),系統自動執行析構函式。析構函式往往用來做「清理善後」 的工作(例如在建立物件時用new開闢了一片記憶體空間,應在退出前在析構函式中用delete釋放)。

以c++語言為例:[1]  析構函式名也應與類名相同,只是在函式名前面加乙個位取反符~,例如~stud( ),以區別於建構函式。它不能帶任何引數,也沒有返回值(包括void型別)。只能有乙個析構函式,不能過載(過載,簡單說,就是函式或者方法有相同的名稱,但是引數列表不相同的情形,這樣的同名不同引數的函式或者方法之間,互相稱之為過載函式或者方法)。如果使用者沒有編寫析構函式,編譯系統會自動生成乙個預設(預設)的析構函式(即使自定義了析構函式,編譯器也總是會為我們合成乙個析構函式,並且如果自定義了析構函式,編譯器在執行時會先呼叫自定義的析構函式再呼叫合成的析構函式),它也不進行任何操作。所以許多簡單的類中沒有用顯示的析構函式。真正實用的析構函式一般是不含有輸出資訊的。一般是有必要將類的宣告和實現(具體方法**)分開編寫的,這也是乙個良好的程式設計習慣。即可以在類的外面定義成員函式,而在類中只用函式的原型作宣告。

14.動態記憶體的幾個重要概念

new,delete,堆,記憶體洩漏,變數陣列的動態記憶體,釋放之後賦值「0」

記憶體洩漏也稱作"儲存滲漏",用動態記憶體

分配函式動態開闢的空間,在使用完畢後未釋放,結果導致一直佔據該記憶體單元。直到程式結束。

15.輸入流,cin>>,控制輸出間隔setw

16.如果我們定義乙個const的類物件,那麼我們如果想呼叫這個類的某個成員函式,我們必須要在這個函式的名字後面加上乙個const如int compare()const.

函式的定義放在外面時也應該在函式體前面加上const修飾符。事實上我們可以在類中定義乙個函式的const和非const兩個版本。

17.類物件的陣列,每個陣列都將呼叫預設建構函式

18.類的靜態資料成員。前面加static ,用 int cbox ::a=2;初始化,常常放在建構函式裡用於計數。注意該成員是共享的。其實只有我們希望靜態資料成員是非0值,我們才會去初始化他們。靜態資料成員常常被用來統計類被呼叫了幾次。

19.靜態函式,靜態函式可以在沒有建立類的時候被呼叫,靜態函式必須使用靜態的變數。通過box1.function()或者cbox::function()來呼叫。也可以用來看類的物件有沒有被建立或者被建立了幾次。

20.類物件的指標和引用。建立p=&box1;引用p->vol();

21.實現複製建構函式,cbox(const cbox& initb);我們直接去訪問initb就避免了不斷建立乙個實參副本來給形參初始化的情況。在不會改變引數的值的情況下,我們習慣加乙個const。

從C語言到C 語言

c 讀作 c加加 是 c plus plus 的簡稱。顧名思義,c 是在c語言 的基礎上增加新特性。從語法上看,c語言是 c 的一部分,c語言 幾乎不用修改就能夠以 c 的方式編譯。對於c和c 的關係,有很多種說法,新人很容易認為c 是c的公升級版,c 比c要高階,c 高大上,c過時了,這種想法不一...

從C語言到彙編,從彙編到C語言

看雪一同志寫的文章,我覺得很基礎和有用,知識著眼於小處。積累才是王道!一 迴圈語句與發彙編後的機器語言 1 for迴圈 下面是一段c語言的 我們的目的是來看其反彙編的結果 int myfunction int a,int b return c 前面的反彙編暫時不理它,這裡從for的地方開始反彙編,結...

從C語言到OC

ios開發 包括iphone和ipad上的應用 使用的是objective c這種語言,oc語言誕生於1986年,也是一門較為古老的語言。oc是完全相容c語言的,也就意味著c語言中所有的語法特性在oc中都是可以使用的,所以很多用c語言開發的庫和函式,是可以在oc語言中直接使用的 這也是oc語言中大部...