物聯(lián)網(wǎng)/嵌入式工程師
重磅升級:新增硬件電路設(shè)計(jì)與實(shí)戰(zhàn),讓你軟硬通吃,同級PK無敵!行業(yè)風(fēng)口、政策傾斜,新晉熱門高薪不內(nèi)卷!0基礎(chǔ)一站式就業(yè)完整路徑,搶占先發(fā)優(yōu)勢!
除了成員變量之外,類還提供了成員函數(shù)。
我們可以在頭文件中用以下的代碼定義一個(gè)成員函數(shù)。
#include <string> class Staff { public: std::string name; int age; int PrintStaff(); };
在頭文件中,定義一個(gè)成員函數(shù),這個(gè)成員函數(shù)的功能是打印雇員的信息。而這個(gè)函數(shù)的實(shí)現(xiàn),是在 .cpp 文件里面實(shí)現(xiàn)的。
打開 .cpp 文件,先 include 頭文件,然后用以下的代碼對函數(shù)進(jìn)行實(shí)現(xiàn)。
#include "Staff.hpp" int Staff::PrintStaff() { printf("Name: %s\n", name.c_str()); printf("Age: %d\n", age); return 0; }
之后,回來 main 函數(shù),就可以使用這個(gè)成員函數(shù)了。
#include <stdio.h> #include "Staff.hpp" int main(int argc,char **argv) { Staff staff1; staff1.PrintStaff(); Staff staff2; staff2.PrintStaff(); return 0; }
成員函數(shù)同樣受到權(quán)限修飾符的限制,上面的例子中,函數(shù)寫到了 public 下面,因此,我們可以在類的外部對其進(jìn)行調(diào)用。而如果把他放到 private 里面,就不能被外部調(diào)用,只能被類中的其他函數(shù)調(diào)用。
例如,我們在上面的類中寫兩個(gè)函數(shù),一個(gè) private,一個(gè) public。
#include <string> class Staff { public: std::string name; int age; public: void FuncA(); private: void FuncB(); };
使用 public 修飾的 FuncA 函數(shù),可以在外部被調(diào)用,而我們嘗試在類的外部調(diào)用 private 修飾的 FuncB 函數(shù),就會發(fā)現(xiàn)編譯器報(bào)錯(cuò)了。因?yàn)?private 修飾的函數(shù)只能在類中被其他成員函數(shù)調(diào)用,例如,可以在 FuncA 中調(diào)用 FuncB。
接下來,我們來介紹一下函數(shù)的重載。成員函數(shù)的重載是指在同一個(gè)類中,函數(shù)名字相同,函數(shù)參數(shù)不同的函數(shù)。
例如:
#include <string> class Staff { public: void FuncA(); void FuncA(int a); };
這個(gè)類中,我們定義了兩個(gè)函數(shù),都叫做 FuncA,但是他們的參數(shù)不一樣,一個(gè)沒有參數(shù),一個(gè)參數(shù)是一個(gè) int 類型的變量。這種情況下,兩個(gè)函數(shù)都是有效的。而在調(diào)用的時(shí)候,C++ 會根據(jù)調(diào)用者傳入的函數(shù)自行匹配相應(yīng)的實(shí)現(xiàn)。
請驗(yàn)證,完成請求
由于請求次數(shù)過多,請先驗(yàn)證,完成再次請求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)