c++學習記錄之類
阿新 • • 發佈:2018-11-11
c++是面向物件的程式語言
面對物件就是:
把資料及對資料的操作方法放在一起,作為一個相互依存的整體——物件。對同類物件抽象出其共性,形成類。類中的大多 數資料,只能用本類的方法進行處理。類通過一個簡單的外部介面與外界發生關係,物件與物件之間通過訊息進行通訊。程式流程由使用者在使用中決定。 類的宣告 class+類名 { 訪問修飾符:(public/private/protected) 類的成員變數; 訪問修飾符: 類的成員函式
};
注 :
1.首先是public修飾符來修飾的函式,是指這個函式可以被其他的類來呼叫,也可以被自己類裡的函式來呼叫。
2.再看protected修飾符來修飾的函式,是指這個函式可以被繼承類呼叫,也可以被自己類裡的函式呼叫,但不能被其他的類呼叫。
3.用private修飾符來修飾的函式,就具有更少的許可權了,只能被自己類裡的其他函式呼叫,其他一概不能呼叫。(訪問修飾符範圍是到定義的下一個訪問修飾符 或是整個類的結束)
若在定義變數前面沒有任何訪問修飾符會預設其訪問修飾符為public
如果我們想要在外部呼叫類內的私有的或受保護的成員變數那麼我們就需要一系列的介面函式
class Cperson
{
public:string name;
private:int age;
protected:bool sex;
public:
int getage()
{
return age;//得到年齡的介面函式如果我們在類外想要訪問類內的私有的或受保護的成員變數就要呼叫介面函式
}
bool getsex()
{
return sex;
}
void setage(int age1)//呼叫介面函式間接給類的成員變數賦值
{
age=age1;
}
};
介面就是與外界互動的通道
類的建構函式 :給函式的成員屬性進行初始化 建構函式的函式名與類名相同 建構函式分為有引數和沒有引數兩種型別
沒有引數的建構函式:
class Cperson
{
public:string name;
private:int age;
protected:bool sex;
public:
Cperson()//沒有引數的建構函式
{ name="leilei";
age=0;
sex=1;
}
Cperson(string name1,int age1,bool sex1)//有引數的建構函式
{ name=name1;
age=age1;
sex=sex1;
}
~Cperson()// 定義解構函式 解構函式呼叫是在類的生命週期結束的時候回收物件清理記憶體 { delete[]psz; psz=0;}
把資料及對資料的操作方法放在一起,作為一個相互依存的整體——物件。對同類物件抽象出其共性,形成類。類中的大多 數資料,只能用本類的方法進行處理。類通過一個簡單的外部介面與外界發生關係,物件與物件之間通過訊息進行通訊。程式流程由使用者在使用中決定。 類的宣告 class+類名 { 訪問修飾符:(public/private/protected) 類的成員變數; 訪問修飾符:
int getage()
{ return age;//得到年齡的介面函式如果我們在類外想要訪問類內的私有的或受保護的成員變數就要呼叫介面函式 } bool getsex() { return sex; } void setage(int age1)//呼叫介面函式間接給類的成員變數賦值 { age=age1; } };int getage()
{ return age;//得到年齡的介面函式如果我們在類外想要訪問類內的私有的或受保護的成員變數就要呼叫介面函式 } bool getsex() { return sex; } void setage(int age1)//呼叫介面函式間接給類的成員變數賦值 { age=age1; } }; //在上述的類裡我們定義了兩個建構函式那麼我們在定義的時候怎麼區分這兩個建構函式呢? int main() { Cperson pp;//這是呼叫的是沒有引數的建構函式; Cperson pp1("leilei",12,1);//這時呼叫的是有引數的建構函式我們可能寫很多個有引數的建構函式那麼我們就用定義物件的時 //候的引數來區分呼叫的到底是哪一個建構函式 return 0; }//宣告物件的時候會自動呼叫建構函式 如果我們沒有定義建構函式那麼會呼叫一個預設的沒有引數的建構函式 Cperson(){}; 注意 如果我們只寫了一個有引數的建構函式那麼就沒有預設的無參的建構函式 定義物件的時候需要注意 解構函式 自動呼叫刪除類內指標成員在堆區分配的空間 解構函式一個類只有一個沒寫也有預設的但是什麼也不做 class Cperson { public:string name; char* psz;// 類內成員有指標 private:int age; protected:bool sex; public: Cperson()//沒有引數的建構函式 { name="leilei"; psz=new char[10];//在堆區分配空間 strcpy_s(psz,10,"aaaaaa")//初始化 age=0; sex=1; }~Cperson()// 定義解構函式 解構函式呼叫是在類的生命週期結束的時候回收物件清理記憶體 { delete[]psz; psz=0;}
int getage()
{ return age;//得到年齡的介面函式如果我們在類外想要訪問類內的私有的或受保護的成員變數就要呼叫介面函式 } bool getsex() { return sex; } void setage(int age1)//呼叫介面函式間接給類的成員變數賦值 { age=age1; } };int getage()
{ return age;//得到年齡的介面函式如果我們在類外想要訪問類內的私有的或受保護的成員變數就要呼叫介面函式 } bool getsex() { return sex; } void setage(int age1)//呼叫介面函式間接給類的成員變數賦值 { age=age1; } };