類
類是對現實生活中一類具有共同特徵的事物的抽象
類是面向對象程序設計實現信息封裝的基礎。
類是一種用戶定義類型,也稱類類型。
類的實例稱爲對象。
類的實質是一種數據類型
面向對象原則
以對象爲中心,以誰做什麼來表達程序的邏輯,對象的所以行爲都通過調用函數來實現
封裝
private : 只讀屬性,不可被外界修改
public :可被外界修改讀取
內聯函數
使用關鍵字inline定義,編譯時將函數體代碼和實參代替函數的調用語句,換句話說,省去了調用函數的過程,效率更高,速度更快,但那要求邏輯簡單,不可太複雜,若太過複雜,加上inline也沒有用
類內定義
整個函數都定義在類裏面
類內定義的成員函數,編譯器會將其優先編譯爲內聯函數,即簡單函數自動編譯爲內聯函數
類外定義
同文件類外定義
注意:關於變量名的定義m_+數據類型+名稱(更規範)
class Teacher {
public:
void setName(string _name);
string getName();
void setGender(string _gender);
string getGender();
void setAge(int _age);
int getAge();
void teach();
private:
string m_strName;
string m_strGender;
int m_iAge;
};
void Teacher::setName(string _name) {
m_strName = _name;
}
string Teacher::getName() {
return m_strName;
}
void Teacher::setGender(string _gender) {
m_strGender = _gender;
}
string Teacher::getGender() {
return m_strGender;
}
void Teacher::setAge(int _age) {
m_iAge = _age;
}
int Teacher::getAge() {
return m_iAge;
}
void Teacher::teach() {
cout<<"Teach"<<endl;
}
構造函數
內存分區:
棧區:int x = 0; int *p = NUll;
堆區:int *p = new int[20];
全局區:存儲全局變量即靜態變量
常量區:string str = “hello”;
代碼區:存儲邏輯代碼的二進制
構造函數在對象實例化時被自動調用
構造函數與類同名
構造函數沒有返回值
實例化對象時僅用一個構造函數
當用戶沒有定義構造函數時,編譯器自動生成一個構造函數