C++語言是C語言的拓展,C語言是面向過程的,C++在C的基礎上增加了面向對象的方法。
所謂面向過程的編程思想,就是分析解決問題的步驟,將這些步驟用一個個函數實現,最後一個個調用。
所謂面向對象的編程思想,就是將任何事物都看成一個對象,對象有各種屬性(attribute)和行爲(behavior),在解決問題的過程中,將系統分解,使之模塊化。
相對於面向過程的思想,面向對象的思想更適用於大型系統的開發。
面向對象的程序設計有四個主要特點:抽象、封裝、繼承、多態。
抽象(abstract):就是將不同對象的共性歸納、集中。在C++中,類是對象的抽象,對象是類的實例(instance)。
封裝(encapsulation):就是將對象的內部實現和外部行爲分隔開來,人們通過接口來進行外部控制,而不用關心內部細節。
繼承(inheritance):在一個已存在的類的基礎上建立一個新的類,新的類具有它所繼承的類的全部特性,且可以增加一些新的特性。繼承可以說是面向對象的程序設計最重要的特點。它實現了軟件的可重用性(reuseability)。
多態(polymorphism):當向不同的對象發送同一消息時,不同的對象在接收到消息後會產生不同的行爲。即,每個對象可以用自己的方法去響應共同的消息。函數的重載就是多態一個很好的例子。
C++作爲一種面向對象的語言,所有內容都體現出了面向對象的思想。例如,定義一個整型變量int a,整型int就是一個類,變量a是這個類的一個對象,當這個對象被建立時,類的構造函數(constructor)被調用,用來初始化這個對象。C++的內置類型(built-in type)的默認構造函數不對對象進行初始化,所以定義int a後,a是沒有初始化的變量。而C++中的string和vector類型,它們的默認構造函數將對象初始化爲空,所以當定義string a後,a已被初始化,初始化爲的值爲空,即a是一個空的字符串。
要注意初始化爲空和沒有初始化是兩個不同的概念,當沒有初始化時,輸出這個變量,變量的值是不定的,不同的編譯器會輸出不同的值,而初始化爲空以後,變量已經被初始化了,在不同的編譯器下,結果是一樣的。
The End