類可以看做是一種資料型別,它類似於普通的資料型別,但是又有別於普通的資料型別。類這種資料型別是一個包含成員變數和成員函式的集合。下面是小編為大家整理的C++類的成員變數和成員函式,歡迎參考~
類的成員變數和普通變數一樣,也有資料型別和名稱,佔用固定長度的記憶體。但是,在定義類的時候不能對成員變數賦值,因為類只是一種資料型別或者說是一種模板,本身不佔用記憶體空間,而變數的值則需要記憶體來儲存。
類的成員函式也和普通函式一樣,都有返回值和引數列表,它與一般函式的'區別是:成員函式是一個類的成員,出現在類體中,它的作用範圍由類來決定;而普通函式是獨立的,作用範圍是全域性的,或位於某個名稱空間內。
上節我們在示例中給出了 Student 類的定義,如下所示:
class Student{
public:
//成員變數
char *name;
int age;
float score;
//成員函式
void say(){
cout<<name<<"的年齡是"<<age<<",成績是"<<score<<endl;
}
};
這段程式碼在類體中定義了成員函式。你也可以只在類體中宣告函式,而將函式定義放在類體外面,如下圖所示:
class Student{
public:
//成員變數
char *name;
int age;
float score;
//成員函式
void say(); //函式宣告
};
//函式定義
void Student::say(){
cout<<name<<"的年齡是"<<age<<",成績是"<<score<<endl;
}
在類體中直接定義函式時,不需要在函式名前面加上類名,因為函式屬於哪一個類是不言而喻的。
但當成員函式定義在類外時,就必須在函式名前面加上類名予以限定。::被稱為域解析符(也稱作用域運算子或作用域限定符),用來連線類名和函式名,指明當前函式屬於哪個類。
成員函式必須先在類體中作原型宣告,然後在類外定義,也就是說類體的位置應在函式定義之前。
inline 成員函式
在類體中和類體外定義成員函式是有區別的:在類體中定義的成員函式會自動成為行內函數,在類體外定義的不會。當然,在類體內部定義的函式也可以加 inline 關鍵字,但這是多餘的,因為類體內部定義的函式預設就是行內函數。
行內函數一般不是我們所期望的,它會將函式呼叫處用函式體替代,所以我建議在類體內部對成員函式作宣告,而在類體外部進行定義,這是一種良好的程式設計習慣,實際開發中大家也是這樣做的。
當然,如果你的函式比較短小,希望定義為行內函數,那也沒有什麼不妥的。