程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C/C++ 初學簡單筆記 —1—

C/C++ 初學簡單筆記 —1—

編輯:C++入門知識

1. 面向對象編程的文件結構:
1)頭文件 .h, 包含類的定義。
2)源文件 .cpp, 類的成員函數,
3)源文件 .cpp, 編寫主函數

2. C++為了節省內存,將成員函數的代碼存儲在計算機內存的一個公用區中,以供該類的所有對象共享。

3. 對象初始化:1)用成員函數 putXxx 2)用構造函數。

4. delete 用法

delete 指針名 // 變量 delete *p

delete []指針名 // 一維數組 delete []p;

delete [行數]指針名 // 二維數組 delete [5]p;

只要程序中,有用new動態分配空間,那麼結尾的時候,必須要用delete釋放內存空間。


5. C++有三種權限 public private protect,只有public是可以在類外直接訪問的,默認權限是private


6. '::' 域運算符,就是表明成員變量或是成員方法是屬於那個類的。


7. 關於this指針。

如下函數
void student::put(int id, char *name, student *const this)
{this->id=id;...}

this是指向本對象的只讀指針,是一個隱含的形參.由系統在幕後自動設置,自動維護。

如果想返回當前對象,可用 return *this;


8. 構造函數,可以在構造函數中實現初始化,注意:構造函數前面不能加上void,否則出錯!

如果重載了構造函數,那麼系統就不會自動生成構造函數了。

所以只要重載了構造函數,最好寫上無參的構造函數,這是一個好習慣。


9. 拷貝函數,就是為了對象間的拷貝,默認的拷貝函數會執行拷貝工作。

拷貝函數形式
類型::類名(類名 &對象別名)
{...}
如:
A a;
A b(a);
A c = a;

以上都實現了對象的復制,我暫時想不出有什麼區別。


10. 析構函數, 在對象消亡的時候,自動調用,默認的析構函數什麼都不做。
A a1;

A *a2 =new A();

程序結束的時候,a1 會自動調用析構函數,而a2不會自動調用析構函數!

我覺得可能是a1在棧內存中,運行結束後,彈棧,所以對象消失,會自動調用析構函數

而a2的聲明在棧內存中,而實例化new A()分配在堆中,彈棧的時候,a2會消失,但是new A()不會消失。

所以沒有調用析構函數。需要用 delete *a2 釋放。


11.預編譯

#ifdef DEBUG

可以進行debug測試

#endif

以上的語句可以用於debug測試,如果不想執行debug裡面的語句,可以將前面的定義值去掉就行了。


12. static 聲明的語句,只會執行一次。

如:

for (i=0; i<10; i++)
{

static int b=0;

b++;

cout<

} // 可以看到b的值是不停增大的,意味著用static修飾的聲明語句只執行了一次!


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved