♥ 學習筆記Learning 程式語言 Coding

[C++程式設計] 學習筆記─封裝與繼承的符號

我我我…雖然很久很久以前有寫過C++,不過經過五六年都忘光光了,而且似乎沒有寫到這個境界,完完全全就只是用C的概念,寫成C++ (大誤),想當然爾,最重要的物件導向觀念,我當然像白癡一樣什麼都不會(大哭跑開…)。但是俗語說得好:「就算沒吃過豬肉,也要看過豬走路。」所以…

pig

我絕對沒有說C++是豬喔!大家不要誤會我。(挺)
在我還沒有開始寫C++時,難免會看到許多用C++寫的程式碼,這時候有幾個符號看不懂到讓我想哭。

class 類似於 struct,一開始轉換時是這樣想像的,雖然不全然是這樣,但是看到class還不至於讓我哭哭。
後來,聽說class家裡面有public(客廳)、private(房間)、freiend(廚房,這當然是我亂掰的。)、protect(書房,這也是我亂掰的。)等這些分類,依照遠近親疏而有不同的權限,看到這裡很清楚的知道,C++跟C比起來,多了比較多的原則,為人也比較機車一點,動不動就搞小團體(大誤)。

好吧!來談談讓我傷心的符號吧!讓我以前每次看到都覺得天殺的這什麼意思…

 1: #include "IntArray.h"
 2: 
 3: class IntArrayRC

: public IntArray

{
 4: 
 5: public:
 6:         //balabala...
 7: private:
 8:        //balabala...
 9: 
 10: };

就是那個該死的冒號( : )重點是還是隨處可見這樣的寫法呢!Q________Q
因此,這句話翻成中文應該怎麼說呢?「我IntArrayRC,繼承了IntArray那位先生家裡public的東西。
他家客廳(public)有的東西我都有喔!而且我還有更多呢!哼哼~~

接著,就是另一個符號了…
對於沒寫過C++,卻一天到晚看C++的人來說,剛開始也覺得這符號天殺的很礙眼。
就是前面那個符號在加倍的雙冒號(::)重點是這更是一個隨處可見的寫法喔!XDrz

比如說,在一個Ball.h裡看到這樣的宣告~

 1: class Ball {
 2: 
 3: public:
 4: Ball();
 5: Ball(double, const char*);
 6: Ball(double, string&);
 7: 
 8: private:
 9: double _radius;
 10: string _name;
 11: 
 12: };

接著又在Ball.cpp當中看到了這幾行….

 1: #include "Ball.h"
 2: using namespace std;
 3: 
 4: Ball

::

Ball() {
 5: _radius = 0.0;
 6: _name = "noname ball";
 7: }
 8: 
 9: Ball

::

Ball(double radius, const char *name) {
 10: _radius = radius;
 11: _name = name;
 12: }
 13: 
 14: Ball

::

Ball(double radius, string &name) {
 15: _radius = radius;
 16: _name = name;
 17: }

嗯嗯!這樣應該一目了然了吧!@@”
雙冒號(::)就是封裝的用法,意思就是Ball class說:「Ball()這個函式是我家的人。」
我家的人都可以盡情的使用我房間(private)的變數喔!咪啾*(> . ^)o

以上不專業介紹完畢,謝謝大家。
以後就算不會寫C++,也跟我一樣至少會看豬走路了!耶~~~
至於為什麼Ball()裡面可以吃這麼多種型別呢?這就是傳說中的多載啦!哈哈~

About the author

蕾咪

蕾咪,來自台東,卻不定期旅居歐洲的工程師女孩,身兼作家、部落客、創業家等多重身份。畢業於台大電子所,曾在義大利商與美商擔任研發工程師;走訪世界後,發現對台灣有段割捨不了的愛,讓我們一起努力成為想要的自己吧!:) 合作邀稿請聯繫:[email protected]

Leave a Comment