介紹C++的類與C#的類
許多編程人員學(xué)習(xí)C++總結(jié)經(jīng)驗(yàn)為,有的覺得C++語(yǔ)言是一門獨(dú)立的語(yǔ)言,并不是在C語(yǔ)言的基礎(chǔ)上,可以直接學(xué)習(xí)C++不必先從C下手。希望大家能夠在此學(xué)習(xí)到自己想要的東西。
"C"語(yǔ)言系列是面向?qū)ο笤O(shè)計(jì)發(fā)展的***例子。C++為開發(fā)者提供了優(yōu)秀的面向?qū)ο缶幊坦ぞ撸绦騿T可以顯式地創(chuàng)建構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),重載操作符,使用模板等等。
C++的類這樣復(fù)雜語(yǔ)言的主要問(wèn)題是程序員要花上好幾個(gè)月來(lái)掌握面向?qū)ο笤O(shè)計(jì)本質(zhì)。新程序員必須學(xué)會(huì)掌握模板,函數(shù)重載,當(dāng)然還要會(huì)創(chuàng)建和使用功能良好的類。
微軟公司給C#(讀為C-Sharp)賦予C++某些面向?qū)ο蟮谋举|(zhì)。#t#
比如模板,但改變了類的創(chuàng)建方法。本文,我將對(duì)比C++的類,并著重說(shuō)明微軟在C#中類創(chuàng)建和使用方面的改變。 本文對(duì)象是熟練的C++程序員,通過(guò)一些細(xì)節(jié)來(lái)解釋C#面向?qū)ο蟮谋举|(zhì)。
如你所知,C#是部分基于C++,部分基于Java語(yǔ)法的語(yǔ)言。C#中還有一些細(xì)節(jié)上的改變,使得它可以用于現(xiàn)代設(shè)計(jì)。當(dāng)你開始用C#建類時(shí)就會(huì)立即看到這點(diǎn)。讓我們通過(guò)一個(gè)簡(jiǎn)單的例子開始了解在C++和C#中是如何建類并進(jìn)行實(shí)例化的。
- #include
- class MyClass
- {
- public: void doSomething()
- { std::cout << "This is some text";
- }
- };
- void main()
- { MyClass mc;
- mc.doSomething();
- }
- C# 版本:
- using System;
- class MyClass
- {
- public void doSomething()
- {
- Console.WriteLine("This is some text");
- }
- }
- class EntryPoint
- { public static void Main()
- { MyClass mc = new MyClass();
- mc.doSomething();
- }
- }
首先,C++用#include包含語(yǔ)句來(lái)指明包含文件iostream.h的物理路徑。C#則告訴編譯器程序?qū)⒃赟ystem命名空間下操作,所有的命名空間和類都屬于System命名空間。C#通過(guò)命名空間的名字來(lái)決定程序的作用范圍(本例中只有System一個(gè)命名空間),而不用指明物理路徑的包含文件方法。
其次,C#的主程序用Main(注意M是大寫)。 第三,C++的類聲明結(jié)束后要在***的大括號(hào)后面用分號(hào)結(jié)尾。C#則可用可不用,往往都是省略。 第四,你能看到在C#中必須顯式地聲明方法和成員的作用域。若不加聲明,缺省為私有(只有類成員可以訪問(wèn)),這點(diǎn)與C++一樣。C#中有5種作用域:
公有(public):其他類成員也可以訪問(wèn)
私有(private):只有類成員才能訪問(wèn)
保護(hù)(protected):類成員和繼承類成員可以訪問(wèn)
內(nèi)部(internal):只有匯編里的成員才能訪問(wèn)(C#的匯編是代碼和資源數(shù)據(jù)的結(jié)合,以asmx作文件后綴)