第一章 認識C 的物件

2021-08-31 15:20:27 字數 3687 閱讀 4393

第一章 

認識c++的物件

1.1 初識c++的函式和物件

一般稱現實世界中客觀存在的事物為物件。

1.混合型語言

c++程式以.cpp作為副檔名,並且必須有乙個且只能有乙個名為mian(不是c++的關鍵字)的主函式。真正的物件導向的語言沒有主函式,c++保留了這個面向過程的主函式,所以稱之為混合型語言。

2.靈活的注釋方式

3.使用輸出和輸入物件

c++將資料從乙個物件流向另乙個物件的流動的抽象稱為「流」。從流中獲取資料的操作稱為提取操作。向流中新增資料的操作稱為插入操作。

cin用來處理標準輸入,即鍵盤輸入。cout用來處理標準輸出,即螢幕輸出。

4.使用命名空間

所謂命名空間(namespace)是一種將程式庫名稱封裝起來的方法,它提高了程式的效能和可靠性。

c++新標準就是將標準類庫中的標頭檔案與一般的標頭檔案(需要使用副檔名「.h」)區分開來。當然,也可以自己定義符合標準庫的標頭檔案,使用這種標頭檔案時,也需要同時使用命名空間語句。

如果仍然使用c庫中的標頭檔案,則需要使用副檔名「.h」形式,例如和。如果使用c++提供的標頭檔案,則不需要使用副檔名「.h」,例如,。注意c++庫中替代c庫中的標頭檔案的正確名稱,例如可以使用替代。

5.物件的定義及初始化

定義物件包括為它命名並賦予它資料型別。

6.函式原型及其返回值

函式都需要有型別說明。int main() 指出main是整數型別,返回值由return後面的表示式決定,且表示式的值必須與宣告函式的型別一致。

c++使用變數的基本規則是:必須先宣告,後使用,對函式呼叫也是如此。

7.const修飾符和預處理程式

c語言一般使用"#define"定義常量,在c++中,建議使用const代替巨集定義。const是放在語句定義之前的,因此可以進行型別判別。

用關鍵字const修飾的識別符號是一類特殊的常量,稱為符號常量,或const變數。使用const允許編譯器對其進行型別檢查並可改善程式的可讀性。

c++語言忍忍可以使用巨集定義。無引數的巨集作為常量,而引數的巨集則可以提供比函式更高的效率。但預處理只是進行簡單的文字代替而不進行語法檢查,所以會存在一些問題。

因為被const修飾的變數的值在程式中不能被改變,所以在宣告符號常量是,必須對符號常量進行初始化,除非這個變數使用extern修飾的外部變數。

c++語言預處理程式不是c++編譯程式的一部分,它負責分析處理幾種特殊的語句,這些語句被稱為預處理語句。顧名思義,預處理程式對這幾種特殊語句的分析處理是在編譯程式的其他部分之前進行的。為了與一般的c++程式語句相區別,所有預處理語句都以位於行首的符號「#」開始。

預處理語句有3種,分別是巨集定義、檔案包含和條件編譯。

預處理程式把所有出現的、被定義的名字全部替換成對應的「字串行」。#define中的名字與c++中的識別符號有相同的形式,為了區別,往往用大寫字母來表示(識別符號用小寫字母),這也適合const語句。

檔案引用使用雙引號還是尖括號,其含義並不一樣。採用尖括號引用系統提供的包含檔案,c++編譯系統將首先在c++系統設定的目錄中尋找包含檔案,如果沒有找到,就到指定的目錄中去尋找。採用雙引號引用自己定義的包含檔案(一般都放在自己定義的指定目錄中),這將通知c++編譯器在使用者當前的目錄下或指定的目錄下尋找包含檔案。指定的目錄不必在同乙個邏輯盤中。

8.程式執行結果

9.程式書寫格式

1.2 認識c++語言面向過程程式設計的特點

c++語言的標準模板庫(standard templete library,stl)提供了與要操作的元素型別無關的演算法,不僅使許多複雜問題迎刃而解,而且也將許多物件導向的程式設計問題轉化成基於物件的面向過程程式設計。

1.2.1 使用函式過載

c++允許為乙個函式定義幾個版本,從而使乙個函式名具有多種功能,這稱為函式過載。

1.2.2 新的基本資料型別及其注意事項

void是無型別識別符號,只能宣告函式的返回值型別,不能宣告變數。c++語言還比c語言多了bool(布林)型。c++標準只限定int和short至少要有16位,而long至少32位,short不得長於int,int不得長於long。

位址運算子「&」用來取物件儲存的首位址。

c++語言中的整數常量有4種型別:十進位制常量、長整型常量、八進位制常量和十六進製制常量,並用字首和字尾進行分類標識。

1.2.3 動態分配記憶體

在使用指標時,如果不使用物件位址初始化指標,可以自己給它分配位址。對於值儲存乙個基本型別資料的指標,申請的方式如下:

new 型別名[size]       //申請可以儲存size個該資料型別的物件

不再使用時,簡單地使用「delete指標名」即可釋放已經申請的儲存空間。

1.2.4 引用

別名的位址就是原來物件的位址,選定命名時使用「引用」運算子「&」,再選用資料型別與之配合。引用的宣告方式如下:

資料型別& 別名=物件名;

所謂「引用」就是將乙個新識別符號和一塊已經存在的儲存區域相關聯。因此,使用引用時沒有分配新的儲存區域,它本身並不是新的資料型別。

引用通常用於函式的參數列中或者作為函式的返回值。對引用實質性的理解應抓住如下兩點:

(1)引用實際上就是變數的別名,使用引用就如同直接使用變數一樣。引用與變數名在使用的形式上是完全一樣的,引用只是作為一種標識物件的手段,不能直接宣告對陣列的引用,也不能宣告引用的引用。

(2)引用的作用與指標有相似之處,它會對記憶體位址上存在的變數進行修改,但它不占用新的位址,從而節省開銷。

1.2.5 對指標使用const限定符

可以用const限定符強制改變訪問許可權。

1.左值和右值

左值是指某個物件的表示式。

2.指向常量的指標

指向常量的指標是在非常量指標宣告前面使用const,例如:

const int *p;

它告訴編譯器,「*p」是常量,不能將「*p」作為左值進行操作,即限定了「*p=」的操作,所以稱為指向常量的指標。

3.常量指標

把const限定符放在*號的右邊,是使指標本身稱為乙個const指標。

int x=5;

int * const p=&x;

不能改變p的指向,但可以通過間接引用運算子「*」改變其值,例如語句「*p=56;」將上面的x的值改變為56。

4.指向常量的常量指標

也可以宣告指標和指向的物件都不能改動的「指向常量的常量指標」,這時必須要初始化指標。例如:

int x=2;

const int * const p=&x;

告訴編譯時,*p和p都是常量,都不能作為左值。

1.2.6 泛型演算法應用於普通陣列

所謂泛型演算法,就是提供的操作與元素的型別無關。

1.2.7 資料的簡單輸入輸出格式

c++提供了兩種格式控制方式:一種是使用iso _base類提供的介面;另一種是使用一種稱為操控符的特殊函式,它的特點是可直接包含在輸出和輸入的表示式中,因此更為方便,不帶形式引數的操控符定義在標頭檔案中,帶形式引數的操控符定義在標頭檔案中。使用它們時,一是要正確包含它們,二是只有與符號「<<」或「>>」連線時才起作用,三是無引數的操控符函式不能帶有「()」號。

1.3 程式的編輯、編譯和執行的基本概念

(1)先使用編輯器編輯乙個c++程式mycpp.cpp,又稱其為c++的源程式。

(2)然後使用c++編譯器對這個c++程式進行編譯,產生檔案mycpp.obj

(3)再使用連線程式(又稱link),將mycpp.obj變成mycpp.exe

所謂整合環境,就是將c++語言的編輯、編譯、連線和執行程式都整合到乙個綜合環境中。

C 初步認識 第一章

剛開始學c 試著總結。以上是我自己敲的乙個小例子。iosstream是由istream 輸入類 和ostream 輸出類 派生,所以在iostream中就有了輸入和輸出的相關物件。其中,cin和cout呢,相當於c語言中的printf,scanf,輸入和輸出函式。cin,表示標準輸入 standar...

第一章 C 基本認識

1.使用visual studio時讓程式暫停,在return前加上這個 charresponse std cin response 2.c 程式開發流程 3.變數名的命名,字母 數字 下劃線,首字母不能是數字。4.c 中型別比較靈活 確切的長度取決於實現 假設要將程式從int為16位的系統移到in...

第一章 認識SDL

從sdl 2.0 roadmap中可以獲取到sdl2當前的規劃路線以及功能支援情況。以下的sdl擴充套件庫已經支援sdl2版本 在官方網頁中可獲取到當前穩定版本,包括原始碼 執行二進位制檔案以及開發庫。sdl2 原始碼編譯請看這裡。建立乙個空專案,配置好 sdl2 的標頭檔案和庫的引用,接著建立乙個...