返回目錄 1 面向對象技術
上一節 1.4 cpp編程基礎
下一節 1.6 cpp的常見特性ios
/* struct.cpp 結構體實例 */ #include <iostream> #include <string> struct Student { std::string name; // 姓名 std::string sex; // 性別 int age; // 年齡 }typedef Student; void STUDENT_dispalyInfos(Student student) { /* 這個函數用來顯示學生信息 */ std::cout << "學生信息" << std::endl; std::cout << "姓名:" << student.name << std::endl; std::cout << "性別:" << student.sex << std::endl; std::cout << "年齡:" << student.age << std::endl; } int main() { Student XiaoMing; XiaoMing.name = "小明"; XiaoMing.sex = "男"; XiaoMing.age = 18; STUDENT_dispalyInfos(XiaoMing); return 0; }
學生信息 姓名:小明 性別:男 年齡:18
/* class.cpp 類實例 */ #include <iostream> #include <string> class Student { private: std::string name; // 姓名 std::string sex; // 性別 int age; // 年齡 public: Student(); // 這是構造函數 Student(std::string name, std::string sex, int age); // 構造函數重載 ~Student(); // 析構函數 void Init(std::string name, std::string sex, int age); // 初始化函數 void displayInfos(); // 顯示成員信息的函數 }; Student::Student() { std::cout << "-++類實例化時,會先調用構造函數" << std::endl; this->name = ""; this->sex = ""; this->age = 0; std::cout << "+++" << name << "初始化完成" << std::endl; } Student::Student(std::string name, std::string sex, int age) { std::cout << "-++類實例化時,會先調用構造函數" << std::endl; this->name = ""; this->sex = ""; this->age = 0; std::cout << "+++" << name << "初始化完成" << std::endl; Init(name, sex, age); } Student::~Student() { std::cout << "-++對象銷燬時,會調用析構函數" << std::endl; std::cout << "+++" << this->name << "已銷燬" << std::endl; } void Student::displayInfos() { std::cout << "————學生信息————" << std::endl; std::cout << "——姓名:" << this->name << std::endl; std::cout << "——性別:" << this->sex << std::endl; std::cout << "——年齡:" << this->age << std::endl; std::cout << "————————————" << std::endl; } void Student::Init(std::string name, std::string sex, int age) { std::cout << "--+" << name << "完成初始化" << std::endl; this->name = name; this->sex = sex; this->age = age; } int main() { Student XiaoMing; // 類實例化時調用無參的構造函數 XiaoMing.Init("小明", "男", 20); // 手動調用初始化函數 Student XiaoHong("小紅", "女", 20); // 類實例化時調用有參的構造函數,直接初始化完成 XiaoMing.displayInfos(); // 顯示信息 XiaoHong.displayInfos(); return 0; }
-++類實例化時,會先調用構造函數 +++初始化完成 --+小明完成初始化 -++類實例化時,會先調用構造函數 +++小紅初始化完成 --+小紅完成初始化 ————學生信息———— ——姓名:小明 ——性別:男 ——年齡:20 ———————————— ————學生信息———— ——姓名:小紅 ——性別:女 ——年齡:20 ———————————— -++對象銷燬時,會調用析構函數 +++小紅已銷燬 -++對象銷燬時,會調用析構函數 +++小明已銷燬
能夠看到,結構體與類有很大的類似之處,可是類內部容許有函數,而且有默認的構造函數(在類實例化時自動運行,能夠重載)和默認的析構函數(對象生命週期結束時自動運行,回收資源)。c++
最早構造的對象,最後被析構。編程
類能夠當作是一個獨立的小程序,做爲整個項目的基本機器存在着,咱們通常會盡可能少在main函數寫大量的代碼,而是集中到類或者函數中,直接在main函數中調用它們便可。小程序
this直接指向實例化的對象對應的類中成員,在這個例子中用於和傳入的外界參數與對象的數據成員區分開來。segmentfault
返回目錄 1 面向對象技術
上一節 1.4 cpp編程基礎
下一節 1.6 cpp的常見特性函數
參考資料:this