從零開始學C++(0 簡介)

  2020年,給本身定一個新目標————開始寫技術博客,將以前所學的內容從新複習並整理成一系列的文章,一來可讓本身對這些基礎知識更加熟悉,二來方便於之後的複習查閱。ios

  之前本身都是以筆記的形式將知識點記錄在有道雲筆記中,這樣可能形成因爲時間緊或者懶,只是記錄了筆記,沒有去深入的理解。因此乘着此次全面複習的機會,把基礎知識都整理成文章的形式,對各個知識點加深理解,耗時可能比較長,可是必定要堅持。算法

  本系列文章爲C++知識的集合,我想結合《C++ Primer》、《STL源碼剖析》、《深度探索C++對象模型》、《Effective C++》、《More Effective C++》這5本書,從易到難地把C++知識點整理一遍。編程

 

  首先,從輸入/輸出開始,簡單地認識一下C++:編程語言

#include <iostream>

int main() {
std::cout << "Enter two numbers: ";
int num1, num2;
std::cin >> num1 >> num2; std::cout
<< "The sum is: " << num1 + num2 << std::endl; return 0; }

  這段代碼的做用就是:輸入兩個整數,輸出它們的和。 函數

  頭文件iostream包含了該程序須要使用到的輸入流(istream)和輸出流(ostream),而cin、cout爲輸入、輸出的對象,endl是一個被稱爲操縱符(manipulator)的特殊值,輸出它的做用就是結束當前行,而且刷新緩衝區。spa

  緩衝刷新操做能夠保證到目前爲止,程序所產生的全部輸出都真正寫入輸出流中,而不是僅停留在內存中等待寫入流,這在日誌系統中頗有用。日誌

  前綴std::指出這些名字(cin、cout、endl)是定義在名爲std的命名空間(namespace)中的。code

  試想,若是輸入的不是整數,而是字符,會發生什麼呢?答案是,流會失效,後面寫到標準IO庫時再細說。對象

 

  在《Effective C++》中,如是說,C++已經是一個多重範型的編程語言,同時支持過程形式(procedural)、面向對象形式(object-oriented)、函數形式(functional)、泛型形式(generic)、元編程形式(metaprogramming)。blog

  使用C++最簡單的方法就是將C++看做一個由相關次語言組成的聯合,分爲四個次語言:

  • C  C++還是以C爲基礎
  • Object-Oriented C++  也就是C with classes,包括構造/析構,封裝(encapsulation),繼承(inheritance),多態(polymorphism)
  • Template C++  C++泛型編程(generic programming)部分,模板元編程(template metaprogramming, TMP)
  • STL  對容器(containers)、迭代器(iterators)、算法(algorithms)以及函數對象(function objects)的規約有極佳的緊密配合與協調

  本系列文章也將圍繞這4個部分來詳細地介紹C++。

相關文章
相關標籤/搜索