1. 程式人生 > 其它 >Chapter 1 內容梳理

Chapter 1 內容梳理

目錄

程式的編譯與執行

編譯環境

  • IDE
  • 命令列

程式的編譯

  • g++ filename : 不指定生成的執行檔名,預設命名為 “a.out”
  • g++ -o exename filename : 指定生成的執行檔名

程式的執行

filename

  • ./exename : use relative path [相對路徑]
  • .../exename : use absolute path [絕對路徑]
  • 注:必須加路徑,直接執行是無效的【這與Shell指令碼不同】

標準輸入與標準輸出

例程匯入

//從標準輸入讀取 v1,v1 ,從標準輸出列印求和結果
#include<stdio.h>
#include<iostream>
int main(){
    std::cout<<"Enter two operands"<<std::endl;
    int v1=0,v2=0;
    std::cin>>v1>>v2;
    std::cout<<"the sum of "<<v1<<" and "<<v2<<" is "<<v1+v2<<std::endl;
    return 0;
}

標準輸入與輸出物件

  • 輸入
    • cin:標準輸入物件【內容進入快取區】
  • 輸出
    • cout:標準輸出物件【內容進入快取區】
    • cerr:一般用以輸出程式錯誤與警告【內容不進入緩衝區】
    • clog:一般用以輸出執行時的相關資訊【內容進入快取區】
  • 標準輸入與輸出物件都與控制檯相關聯

輸入與輸出符號詳解

<<和>>本來表示左移和右移,但在iostream標頭檔案中,被過載為函式
cout << "hello world"
cin >> v1

函式角度理解【用函式的副作用】

  • 引數
    • cout : ostream 物件
    • “hello world” : 一個定值
  • 輸出
    • ostream物件的引用, 等價於 ostream物件
    • 這是cout可以鏈式使用的原因
  • 副作用 : 把定製賦給ostream物件,並輸出到控制檯【標準io】

運算子角度理解

  • 左值 : ostream物件
  • 右值 :一個定值
  • 效果 :把定值賦給osteam物件,並把值輸出到控制檯
  • 注:可以鏈式使用

定位符號(scope operator)

  • 作用:解決同名衝突
  • std::cout表示cout是在std名稱空間(namespace)裡的函式
  • 名稱空間可以在標頭檔案之後指定using namespace std;,這樣在寫cout時就不用加上std::

換行符號(endl)

  • 表示換行
  • 清空緩衝區【全部輸入到ostream物件中】

如何輸入EOF

  • window : 換行——輸入ctrl+z——換行
  • unix:換行——輸入ctrl+d——換行

類,型別,成員,物件,變數等概念間的關係

型別(type)與類(class)

  • 型別(type):聲明瞭一種資料結構,包括資料以及對資料的操作
    • 固有型別(build-in type):語言本身支援的型別,如int,char
    • 自定義型別:程式設計者自己定義的型別(OOP特有)
  • 類(class):
    • 在C++中,使用者實現自定義型別的機制。支援使用者自己指定資料成員以及操作,來實現自定義型別。
    • 用類機制實現的自定義型別稱為類型別(class type)
  • 關係

成員

  • 在固有型別中,定義了資料與對資料的操作
  • 成員是類型別中,對資料對資料的操作這兩個概念的對映
    • 資料——>成員
    • 對資料的操作——>成員函式

物件與變數

同上,二者是同級概念,為對映關係

  • 型別(type)的例項化稱為變數【int i 表示 i 是 int 型別的變數】
  • 類型別(class type)的例項化為物件【Sale_Item it 表示 it 是一個 Sale_Item物件】

關係圖