鑑於可能有一部分讀者剛剛初學C++,所以我在這裡做一些補充基礎的說明告訴大家如何入門。
首先,如果你只是想學一門程式語言作為興趣,那學C++吧,C++樂趣無窮,但是,如果你是想快速入門用它來找工作,那就,快跑吧!java不香嗎?
如果你看到這裡,表示老子就要和C++槓上了,新手入門可以看一看。
首先是本地IDE,一開始我用的是visual studio,後來因為vscode插件太好用了,轉換成了vscode,但是初學者建議使用visual studio,因為vscode的頭文件和源文件的連結有點麻煩。
之後給大家推薦一個視頻,我是跟著b站上的黑馬程式設計師入門了C++,介紹了for,while,if之類的東西以及普通的語法。
https://www.bilibili.com/video/BV1et411b73Z
接下來對封裝再進行進一步的補充。
上一節介紹了封裝中的public和private,只大概說明了在類外調用不同權限的成員。
這裡再多提一點。當類外(比如說main函數中),需要調用類內的private權限的成員變量怎麼辦呢?可以通過在類內的public權限下建立一個調用private成員變量的函數。
#include <iostream>using namespace std;
class GF{public: string name; int age; void dosth(){ cout << "do something!" << endl; cout << a << endl; cout << b << endl; }private: int a = 1; int b = 2;};
int main(){ GF gf; gf.name = "wang"; gf.age = 26; cout << "name = " << gf.name << "age = " << gf.age << endl;
gf.dosth();
return 0;}OK,封裝補充完了,接下來介紹繼承。
繼承是關於一個類繼承一個類,也就是說繼承的父類的子類可以具有父類的一些成員函數或者變量。比如:
#include <iostream>using namespace std;
class GF{public: string name; int age; void dosth(){ cout << "do something!" << endl; cout << a << endl; cout << b << endl; }private: int a = 1; int b = 2;};
class ONE : public GF{
};
int main(){ ONE one; one.age = 26; one.name = "zhangsan"; one.dosth(); cout << "name = " << one.name << "age = " << one.age << endl; return 0;}可以看到,ONE這個類裡面沒有什麼,但只是用public的方式繼承了一下GF,在main函數中,就可以創建一個one,它具有age,name,dosth()等成員。
我們可以使用visual studio下面的開發者工具,打開Developer Command Prompt
首先將目錄切換到該文件的目錄,我這裡是E盤,直接輸入E:
切入到E盤之後,將目錄切入到該文件夾下 cdE:\studyofcpp\studioteaching\繼承\繼承
輸入dir,回車,可以看到該文件下面的目錄
在輸入 c1 /d1 reportSingleClassLayoutONE 「01內存分布.cpp」
(格式為c1 /d1 reportSingleClassLayout類名 「文件名」)
終端上就會顯示:
如上圖所示:我們在ONE中雖然沒有寫任何的成員變量或是函數,但是該類卻具有age、a、b三個對象,具體為什麼沒有函數,之後詳敘。
如果你再在ONE裡面寫一個c:
class ONE : public GF{public: int c;};再進行上述操作,就會顯示
可以看到,age、a、b是繼承而來的,c是自己的。
我們之前在探討C++類內三種權限時,說到了public、private、protected,當時我們只介紹了前兩種,分別是以類外可不可以調用來區分的。
當沒有繼承關係的時候,protected和private一樣,類外不可以調用類內的protected成員,但是當涉及到繼承的子類時,子類是可以調用父類中protected的成員的,但是無法調用private成員。
子類在繼承父類時,也有這三種不同的繼承,public、protected和private。
圖片來自於:https://blog.csdn.net/weixin_38889219/article/details/106291935
以防忘記,下面會逐步介紹類內內存分布、虛繼承、菱形繼承
(歡迎補充)