亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

趣味 C++ 進階

難度初級
時長 8小時 0分
學習人數
綜合評分9.60
10人評價 查看評價
10.0 內容實用
8.8 簡潔易懂
10.0 邏輯清晰
  • Coder 繼承自 Staff class Coder : public Staff { };
    查看全部
  • 可以看到,在 C++ 默認的復制模式之下,兩個對象中的 mem 指針指向了同一片內存。因為 C++ 默認的復制模式只會簡單得把成員的值進行復制,面對這個 mem 指針,他只會把指針的值進行拷貝,最后的結果就是 mem 指針指向了同一片內存。 這種拷貝方式,被稱之為淺拷貝
    查看全部
  • #include "Staff.hpp" #include <stdio.h> Staff::Staff(std::string _name, int _age) { mem = (char *)malloc(20); name = _name; age = _age; printf("構造函數被調用\n"); } Staff::~Staff() { if(mem != nullptr){ free(mem); mem = nullptr; } printf("析構函數被調用\n"); } 代碼塊預覽復制 在上面的代碼中,在類中定義了一個指針,在構造函數中,通過 malloc 函數分配了一個 20 字節大小的堆內存,然后將這片堆內存的首地址賦值給了這個指針。在析構函數中,我們將這片堆內存釋放掉。
    查看全部
  • 對象實例化的時候,會調用構造函數,而對象銷毀的時候,就會調用析構函數。我們先來嘗試寫一個析構函數: Staff.hpp #include <string> class Staff { public: Staff(std::string _name, int _age); ~Staff(); public: std::string name; int age; }; 代碼塊預覽復制 Staff.cpp #include "Staff.hpp" #include <stdio.h> Staff::Staff(std::string _name, int _age) { name = _name; age = _age; printf("構造函數被調用\n"); } Staff::~Staff() { printf("析構函數被調用\n"); } 代碼塊預覽復制 調用代碼不改,然后再運行一下。我們發現,程序在調用了構造函數之后,又調用了析構函數。 我們之前講過棧內存,這個對象是分配在棧上面的,實例化的時候,調用了構造函數,而緊接著,main 函數就要結束了,這個棧對象就自動銷毀了,銷毀的時候,就調用了析構函數。
    查看全部
  • 此外,構造函數是可以有參數的,我們常常用構造函數來進行初始化。例如,我們可以利用構造函數對 name 和 age 進行傳值。 Staff.hpp #include <string> class Staff { public: Staff(std::string _name, int _age); public: std::string name; int age; }; Staff.cpp #include "Staff.hpp" #include <stdio.h> Staff::Staff(std::string _name, int _age) { name = _name; age = _age; } 當然,對于有參數的構造函數,調用的時候只要傳進去參數就行了?,F在,我們可以創建一個名叫 “mooc”,29 歲的員工了。 #include <stdio.h> #include "Staff.hpp" int main(int argc,char **argv) { Staff staff("mooc", 29); return 0; }
    查看全部
  • #include <string> class Staff { public: Staff(); }; 可以看到,這里定義了一個和名稱和類名相同,沒有返回值的函數,這個函數稱為構造函數。構造函數的特殊之處在于,他會在類實例化的時候被調用
    查看全部
  • 函數的重載 #include <string> class Staff { public: void FuncA(); void FuncA(int a); }; 這個類中,我們定義了兩個函數,都叫做 FuncA,但是他們的參數不一樣,一個沒有參數,一個參數是一個 int 類型的變量。這種情況下,兩個函數都是有效的。而在調用的時候,C++ 會根據調用者傳入的函數自行匹配相應的實現。
    查看全部
  • 成員函數的重載是指在同一個類中,函數名字相同,函數參數不同的函數。
    查看全部
  • 嘗試在類的外部調用 private 修飾的 FuncB 函數,就會發現編譯器報錯了。因為 private 修飾的函數只能在類中被其他成員函數調用,例如,可以在 FuncA 中調用 FuncB
    查看全部
  • 成員函數同樣受到權限修飾符的限制
    查看全部
  • #include <string> class Staff { public: std::string name; int age; int PrintStaff(); }; 代碼塊預覽復制 在頭文件中,定義一個成員函數,這個成員函數的功能是打印雇員的信息。而這個函數的實現,是在 .cpp 文件里面實現的。 打開 .cpp 文件,先 include 頭文件,然后用以下的代碼對函數進行實現。 #include "Staff.hpp" int Staff::PrintStaff() { printf("Name: %s\n", name.c_str()); printf("Age: %d\n", age); return 0; }
    查看全部
  • protected 用來指定保護成員。一般是允許在子類中訪問
    查看全部
  • public 用來指定公有成員。一個類的公有成員在任何地方都可以被訪問。例如: class A { public: int a; int b; } 代碼塊預覽復制 用 public 修飾的,在外部是可以訪問的: int main(int argc,char **argv) { A a; a.a = 15; // 不會報錯,因為成員變量是 public 的 return 0; }
    查看全部
  • private 用來指定私有成員。一個類的私有成員,不論是成員變量還是成員函數,都只能在該類的內部才能被訪問
    查看全部
  • 權限修飾符:private,public
    查看全部

舉報

0/150
提交
取消
課程須知
你需要具備基礎的 C++ 語法知識,在學習本課程之前,建議先學習《趣味 C++ 入門》,快速認識 C++,熟悉 C++ 基本語法,更加快速入手進階課程!
老師告訴你能學到什么?
在本門課程中,你將學習到:計算機存儲數據的原理、指針的進階、面向對象編程、內存管理技巧等 C++ 高級語法。在課程的最后,將帶領大家使用 C++ 編寫一個五子棋游戲,通過實踐,加深理解,鞏固學習成果。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!