很早就有學習C++的衝動,但是由於一直以來堅持C#而沒有真正進入過C++世界很多的文章包括微軟的也只有C++轉向C#的文章,而很少有人寫過由C#進入C++的文章。由於我對遊戲開發很有興趣,在我看到的現狀來看C++是遊戲界的首選,我是說大型遊戲而不是手機之類的。同時朋友會叫你寫一個小程式,比如一個計算機,你總不能叫他裝一下.NET架構再運行吧,所以多我來說學習C++還是很有必要的,不知道大哥大姐們是怎麼個想法。在此我想記錄一下C#中和C++的區別和聯絡等等,OK今天首先看看C#中和C++中的類及其繼承等等。
【C++】在這裡我們主要講講C++,而且會偏重VC++。首先讓我們看看C++的檔案組成,我們都知道C++中有標頭檔(.h),和實現的檔案(.cpp),在標頭檔中聲明一下變數,方法等等,而方法的實現就在cpp檔案中實現。在實現檔案中要包含當前標頭檔何必要的標頭檔(和C#中using引入的命名空間有點像),並且實現當前標頭檔中聲明的方法等等。在C++中定義一個類格式如下(一般儲存在標頭檔中):
1 class <類名>
2 {
3 private:
4 <私人資料成員和私人成員函數的聲明列表>;
5 public:
6 <公有資料成員和公有成員函數的聲明列表>;
7 protected:
8 <保護資料成員和保護成員函數的聲明列表>;
9 };
10
【C#】在C#中定義一個類就很簡單了,在.NET中為了更能區分各個類的層次等等引入了命名空間,每一個類都屬於特定的命名空間。定義一個類如下:using 引入所要用到的命名空間
namespace 命名空間
{
public/private/protected/internal [statics] <類名>
{
成員:...
}
}
【C++】C++也是物件導向的程式設計語言,當然也可以繼承等等,它允許多重繼承,一個類可以有幾個基類。而繼承的基類中的成員可見度是在繼承中指定的,在MFC中所有類都直接或間接的繼承自CObject類,這和C#中的所有類都繼承自Object是一樣的。格式如下:
class <衍生類別名>
: [<派生方式>] <基類名>
{
. . . // 衍生類別新增加的成員聲明列表
};
<派生方式>:
public[常用]:除了私人成員外不可訪問外,保留所有基類成員的存取層級。也就是說在當前類中可以訪問基類中的public和protected的成員,在當前類的子類中也可以訪問祖父類的成員(這和C#中的繼承一樣);
protected:基類所有的公有和保護成員在衍生類別中都成為保護成員(在當前類或子類中,基類的所有成員全為protected),只允許在衍生類別的成員函數和該衍生類別的衍生類別的成員函數中訪問基類的非私人成員。
private[很少用]:基類所有的公有和保護成員在衍生類別中都成為私人成員,只允許在衍生類別的成員函數中訪問基類的非私人成員。
【C#】在C#中繼承就和C++中的public繼承一樣,但是C#只能夠繼承一個基類,但是可以繼承多個介面。而決定繼承或不讓繼承的類還可以通過建構函式或sealed來限定類型,使得當前類不能夠被繼承。
友情提示(好的命名方式可以協助代碼的可讀性):
C++中類的命名以C開頭(而C#沒有此規定);
g_:全域範圍;
m_:成員變數;
l_:局部範圍。
在不斷的學習中可以知道他們的區別,現在很多人都在用.NET的,也有很多人有意轉向C++,本人也是剛開始學習C++把我所想到的所看到的記錄下來,希望可以給大家同仁一點協助,也能夠鞏固一下自己的學習!!!