1. 程式人生 > ><CPP學習>第一天 第一個CPP程序 hello word

<CPP學習>第一天 第一個CPP程序 hello word

基礎上 iostream 強調 進度 自學 col 消息 擴展 return

  由於我是計算機類嵌入式專業的大一學生,之前一直使用的是生萬物的C語言,了解了其過程性語言的特性及其基礎語法,在大一下學期期末階段想自學一下C++,其實在開學初就買了一本C++ Primer,但由於各種原因沒抽出空看,想借期末和暑假這一大段空余時間充分學習一下C++,這也是我寫此電子筆記的初衷。

  C++是由C語言發展而來,C代表的是過程性語言,C++在C語言的基礎上添加的類代表的面向對象語言、C++模板支持的泛型編程。C語言與C++區別不多贅述,為什麽要用面向對象,那什麽又是面向對象呢?雖然結構化編程的理念提高了程序的可讀性,但是在編寫大型程序時仍然面臨著挑戰,為了應付這種挑戰,OOP(面向對象)提供了一種新方法。與強調過程性編程不同的是,OOP強調的是數據。

  C++中,類是一種規範,它描述了這種新型數據格式,對象是根據這種規範構造的特定的數據結構,類可以描述數據的基本特征,對象則是描述類的具體數據,通常,類規定了可使用哪些數據來表示對象以及可以對數據進行那些操作。

  接下來編寫我的第一個CPP程序:

  

1 #include<iostream>
2 int main()
3 {
4   using namespace std;
5   cout << "Hello";
6   cout << endl;
7   cout << "world!";
8   return 0;          
9 }

  

  如果程序要使用C++的輸入或輸出工具,則需要如下這行代碼。

  #include<iostream>

  使用了#include編譯指令,該編譯指令導致預處理器將iostream文件的內容添加到程序中,這是一種典型的預處理器操作:在源代碼被編譯前,替換或添加文本。和C語言一樣,同樣是需要調用頭文件,C語言中的輸入輸出頭文件是<stdio.h>,C語言的傳統是頭文件使用擴展名.h,將其作為一種通過名稱標示文件類型的簡單方式,但在C++中用法變了,對老式C的頭文件保留了擴展名h,仍然可以使用,但C++的頭文件則沒有擴展名。有些C轉換為C++的頭文件,這些文件被重新命名,去掉了擴展名h,並在文件名稱前加上了前綴c,表示來自c語言。例如C++版本的math.h為cmath。

  名稱空間

using namespace std;

  如果使用iostream,而不是iostream.h,則應該使用名稱空間編譯指令來使iostream中的定義對程序可用。

  using編譯指令。這章沒有細講,但是我將它這樣理解。當你編寫大型程序以及將多個廠商現有的代碼組合起來的程序時更容易,但是有一個潛在的問題,可能使用兩個封裝好的產品時候,他們都包含一個名為out()的函數。這樣使用out()函數時,編譯器不知道你使用的是哪個out(),名稱空間讓廠商能夠將其產品封裝在一個叫做名稱空間的單元中,這樣就可以用名稱空間的名稱來指出你想用哪個廠商的out()函數了。比如a廠可以將其定義放到一個名為aa的名稱空間中,b廠將其定義放在一個bb的名稱空間中,這樣就可以用名稱空間來區分不同的out()函數了。

  

aa::out();//使用a廠商的out
bb::out();//使用b廠商的out

  再看這段代碼,現在他們都被放置在std的名稱空間中(僅頭文件沒有.h時),意味著在iostream中定義的用於輸出的cout變量實際上是std::cout,因此可以省略using。

  然而多數人不喜歡將引入空間名稱之前的代碼轉換成引入空間名稱之後的代碼。於是using編譯指令應運而生,下面的一行代碼表明,可以使用std名稱空間中定義的名稱,而不必使用std::前綴:

  using namespace std;

  這個using編譯指令使得std空間名稱中的所有名稱都可以用,但是在大型項目中有一個潛在的問題,更好的方法是,只讓所需的名稱可用:

  

using std :: cout; 
using std :: cin;
using std :: endl;

  使用cout進行C++輸出

  現在來看一下如何顯示一條消息,在C語言中可能會使用如下語句:

printf("Hello world!");

  在C++中,我們將使用iostream下的cout函數來進行輸出:

 cout << "Hello";

  雙引號部分為字符串即要打印輸出的部分,<<符號表示該語句將把字符串發送給cout,該符號指出了信息的流動路徑。cout是一個預定義的對象,知道如何顯示字符串、數字和單個字符等(對象是類的特定實例,類定義了數據的存儲和使用方式)。

  現在來看一下C++從概念上如何解釋這個過程。從概念上來看,輸出是一個流,即從程序流出的一系列字符。cout對象表示這種流,其屬性是在iostream文件中定義的。cout的對象屬性包括一個插入運算符<<,它可以將其右側的信息插入到流中。

  控制符endl

  可以簡單的理解為和c語言\n效果一樣,不過\n為轉義序列。endl為控制符。一個差別就是,endl確保程序繼續運行前刷新輸出,將其立即顯示在屏幕上,使用\n則不能提供這樣的保證。

  使用cin

  可以理解為c語言中的getchar()。與cout一樣cin也是一個智能對象。

  這就是我的第一個CPP程序,詳細的了解了C++的頭文件,空間名稱,cout,endl,cin。最後我使用的IDE是VS2018,強力安利一波。今後我每天都會再此更新我的CPP學習進度。

  

<CPP學習>第一天 第一個CPP程序 hello word