類的定義
class 類名{ 訪問范圍說明符: 成員變量1 成員變量2 成員函數聲明1 成員函數聲明2 訪問范圍說明符: 更多成員變量 更多成員函數聲明 ... };
類的定義要以
;
結束。
“訪問范圍說明符”一共有三種,分別是 public、private 和 protected。三者的區別后面會詳細介紹,目前暫且都用 public。“訪問范圍說明符”可以出現任意多次。
“成員變量”的寫法與普通的變量定義相同。稱其為成員變量,是因為這些變量是一個類的成員。
同樣地,“成員函數聲明”的寫法也與普通的函數聲明相同。
一個類的成員函數之間可以互相調用。類的成員函數可以重載,也可以設定參數的默認值。
以前所學的函數不是任何類的成員函數,可稱為“全局函數”。
成員變量就代表對象的“屬性”,成員函數就代表對象的“方法”。成員變量和成員函數出現的先后次序沒有規定。
成員函數的實現可以位於類的定義之外,格式如下:
返回值類型 類名:函數名() { 函數體 }
定義類之后,就可以定義對象了。定義對象的基本方法如下:
類名 對象名;
此處,“對象名”的命名規則和普通變量相同。對象也可以看作“類變量”。
public:
int w, h; //成員變量,寬和高
void init( int w_,int h_ ); //成員函數,設置寬和高
int area(); //成員函數, 求面積
int perimeter(); //成員函數,求周長
}; //必須有分號
void CRectangle::init( int w_,int h_ )
{
w = w_; h = h_;
}
int CRectangle::area()
{
return w * h;
}
int CRectangle::perimeter()
{
return 2 * ( w + h);
類的構造函數
1.構造函數是特殊的成員函數,與其他成員函數不同的是,構造函數和類同名,而且沒有返回類型。與其他成員函數相同的是,構造函數也有形參表(可能為空)和函數體。
一個類可以有多個構造函數,每個構造函數必須有與其他構造函數不同數據或類型的形參。對於沒有形參的構造函數我們稱為默認構造函數,那么定義對象時,如果沒有指明實參,就會調用默認的構造函數。
值得注意的是,如果我們沒有顯式地定義默認構造函數,編譯器會自動為這個類生成默認構造函數,這個自動生成的默認構造函數,就會按照一定的初始化規則來初始化類中的成員。
構造函數與其他函數一樣,具有名字、形參表和函數體,但是構造函數可以包含一個構造函數初始化列表。構造函數初始化列表以一個冒號開始,接着是一個以逗號分隔的數據成員列表,每個數據成員后面跟一個放在圓括號中的初始化式。
2.構造函數是一類特殊的函數,與其他的成員函數不同的是構造函數構造函數不需要用戶來調用它,而是建立對象的時候自動的執行
代碼示例
#include <iostream>
//#include "student.h"
//#include <string>
//#include <cstring>
using namespace std;
class Time
{ public:
Time() //構造函數必須與類的名稱相同
{ //利用構造函數對對象中的數據成員進行初始化
hour=0;
minute=0;
sec=0;
}
void set_time();
void show_time();
private:
int hour;
int minute;
int sec;
};