1. 程式人生 > >C++ 學習筆記 二

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 指標。