C++語言最初於1983年由Bjarne Stroustrup創造,在AT&T貝爾實驗室的C語言基礎上進行了擴展,為面向對象編程 (OOP) 提供了更多支持。自那時以來,C++一直在改進和發展,在許多方面成為了一種非常強大且通用的編程語言。下面將從不同的角度上闡述C++語言演進歷史。
一、面向對象編程 (OOP)
C++語言最早被稱為「C with Classes」,最初的設計目的是擴展C語言,使其可以支持對象級別的抽象類和繼承,這些都是為面向對象編程提供更多支持而設計的。然後在1985年發行了第一版C++,這個版本也是被稱為「C++ 1.0」,它包括了所有的基本OOP概念,如類、對象、繼承、多態等。
#include using namespace std; class Animal { public: virtual void makeSound() { cout << "I am an animal" << endl; } }; class Dog : public Animal { public: void makeSound() { cout << "I am a dog" <makeSound(); return 0; }
在上面的示例中,我們定義了一個基類 `Animal` 和一個繼承自 `Animal` 的派生類 `Dog`;`makeSound()` 函數是虛函數,在基類中被聲明為 `virtual
`,在派生類中被重新定義。在C++的OOP中,多態和虛函數很常見。
二、模板元編程 (TMP)
模板元編程是一種使用編譯時計算來生成代碼的技術,它允許在編譯時執行計算,並將計算結果插入到生成的代碼中,這可以帶來很多優點,比如更高的性能和更優秀的代碼質量。
#include using namespace std; template T add(T a, T b) { return a + b; } int main() { int a = 1, b = 2; double c = 1.5, d = 2.5; cout << add(a, b) << endl; cout << add(c, d) << endl; return 0; }
在上面的示例中,我們定義了一個模板函數 `add()`,它是通用的,可以處理不同類型的參數,包括整數和浮點數。使用模板元編程技術,我們可以生成優秀的代碼,並且保證了類型安全。
三、標準庫
C++ 標準庫取代了早期的複雜、低效和難以學習的C函數庫,提供了許多通用的數據結構和算法,以及大量用於輸入/輸出、字符串處理和數學計算的庫函數。
#include #include #include using namespace std; int main() { vector v = {3, 2, 1, 4, 5}; sort(v.begin(), v.end()); for (int i = 0; i < v.size(); ++i) { cout << v[i] << " "; } cout << endl; return 0; }
在上面的示例中,我們使用 `vector` 容器存儲一組整數,然後使用 `std::sort()` 函數對其進行排序。使用C++標準庫,我們不再需要自己實現這些數據結構和算法,可以更專註於業務邏輯的實現。
四、多線程和並發編程
多線程和並發編程的支持是現代編程語言的一項重要特徵,它允許我們創建並發性程序,以便能夠更好地利用多核處理器,從而提高程序的性能和吞吐量。
#include #include using namespace std; void printMessage() { cout << "Hello, C++ World!" << endl; } int main() { thread t(printMessage); t.join(); return 0; }
在上面的示例中,我們創建了一個新的線程 `t`,然後運行了名為 `printMessage()` 的函數。C++標準庫內置了對多線程和並發編程的支持,使得這種編程模式變得更加容易和常見。
結論
在C++的演進歷史中,我們可以看到,C++一直在不斷改進和發展,從面向對象編程到模板元編程,再到C++標準庫和多線程編程,這些都是為了滿足使用者日益增長的需求。C++目前已成為一種非常強大且通用的編程語言,用於構建許多大型和複雜的系統。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/182154.html