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