C++ 學習筆記 二
1.指標與引用
引用只能在定義時被初始化一次,之後不可變;指標可變;
引用不能為空,指標可以為空;
引用沒有 const,指標有 const;
引用必須在建立時被初始化。指標可以在任何時間被初始化。
2.資料結構
// 宣告一個結構體型別
Books struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id; };
Books Book1; // 定義結構體型別 Books 的變數 Book1
sprintf(Book1.title,"%s",a);
strcpy( Book1.title, "C++ 教程");
struct Books *struct_pointer;
struct_pointer = &Book1;
為了使用指向該結構的指標訪問結構的成員,您必須使用 -> 運算子,如下所示:
struct_pointer->title;
cout << "書標題 : " << book->title <<endl;
下面是一種更簡單的定義結構的方式,您可以為建立的型別取一個"別名"。例如:
typedef struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }Books;
現在,您可以直接使用 Books 來定義 Books 型別的變數,而不需要使用 struct 關鍵字。下面是例項: Books Book1, Book2;
3.static 修飾符
1.當我們宣告類的成員為靜態時,這意味著無論建立多少個類的物件,靜態成員都只有一個副本。我們不能把靜態成員的初始化放置在類的定義中,但是可以在類的外部通過使用範圍解析運算子 :: 來重新宣告靜態變數從而對它進行初始化
// 初始化類 Box 的靜態成員
int Box::objectCount = 0;
2.靜態成員函式:
靜態成員函式即使在類物件不存在的情況下也能被呼叫,靜態函式只要使用類名加範圍解析運算子 :: 就可以訪問。
靜態成員函式只能訪問靜態成員資料、其他靜態成員函式和類外部的其他函式。
不能訪問類的 this 指標。您可以使用靜態成員函式來判斷類的某些物件是否已被建立
靜態成員變數在類中僅僅是宣告,沒有定義,所以要在類的外面定義,實際上是給靜態成員變數分配記憶體。如果不加定義就會報錯,初始化是賦一個初始值,而定義是分配記憶體。
//宣告 static int objectCount;
// 初始化類 Box 的靜態成員 其實是定義並初始化的過程 int Box::objectCount = 0; //也可這樣 定義卻不初始化 //int Box::objectCount;
靜態成員函式與普通成員函式的區別:
- 靜態成員函式沒有 this 指標,只能訪問靜態成員(包括靜態成員變數和靜態成員函式)。
- 普通成員函式有 this 指標,可以訪問類中的任意成員;而靜態成員函式沒有 this 指標。