- C++程序設計(第3版)
- (美)瑞克·莫瑟
- 1230字
- 2020-01-16 13:52:19
1.2 對象、類型與變量
為了讓輸入的內容在程序中發揮作用,我們必須要在計算機內存中開辟一塊“空間”來存儲它們。關于這一點,C++之父Bjarne Stroustrup是這樣說的:
我們將這樣的一塊“空間”稱為一個對象。換而言之,對象就是內存中一塊帶有類型信息的區域,其類型規定的是這塊“空間”內所能存儲的信息種類,而被命名了的對象就叫作變量。例如,字符串要放在string變量中,整數要放在int變量中。大家可以將對象看作一個“盒子”,我們可以用它來存放該對象類型的值。
例如,在之前的程序中,我們就是用int類型來存儲數字或整數的。在int變量上,我們可以執行包括加、減、乘、除在內的一系列操作。另外,這里需要提醒一下,C++中的乘法運算符是*(因為用x可能會帶來某種混淆)。
double courseGrade = 0.5*projects + 0.2*midterm + 0.5*finalExam;
float和double這兩個類型存儲的是帶有小數部分的數值(double是兩倍大的float類型)。另外,C++的string類型中存儲的是“Firstname I. Lastname”這樣的字符序列,以及一個記錄該字符串中字符數的整數。
對象是存在于計算機內存中的實體,我們可以通過一個對象所存儲的值類型(它的屬性)以及它所能執行的操作(它的行為)[Booch]來理解這個對象。也就是說,每個對象都應該有:
● 一個用于存儲和檢索該對象值的名稱。
● 一組存儲與計算機內存中的值,它們代表了該對象的狀態。
● 一組該對象可以執行的操作,比如加法、輸入、輸出、賦值等。
關于對象的名稱、狀態和操作這3個特征,我們在之前的課程成績程序中其實都有說明。該程序用projects、midterm、finalExam這3個數字對象存儲了來自鍵盤的輸入。這些對象各自都存儲了一個像79或90這樣的整數。并且這些對象可以執行輸入、乘法和加法操作,以此計算出了courseGrade的值。另外,這些數字對象還用賦值操作完成了存儲動作,用cout<<操作完成了輸出動作,這樣用戶才能看到程序處理的結果。
首個程序中的對象特征:

在C++中,類型分為基本類型和復合類型兩種。其中,基本類型所存儲的是一個固定大小的、直接與硬件對應的值,這種類型確定的是其對象中可以存儲什么值,以及可以在該對象上執行什么操作。對于int和double這樣的數字類型來說,其對象所占的字節數在不同的計算機中是不一樣的,這決定著該對象所能存儲的取值區間。

復合類型是一種由其他類型來定義的類型,本書將會涉及的復合類型包括引用、函數、類、數組以及指針。舉例來說,下面的string就是一個由字符和其他相關數據組成的引用類型,它可以找出某字符序列的長度,也可以從某一字符串中創建一個被指定了首尾索引的子字符串(在后續章節中,我們還會介紹更多相關的操作):
string aString = "A sequence of characters"; // Output: cout << aString.length() << endl; // 24 cout << aString.substr(2, 8) << endl; // sequence
除了string類型之外,還有兩個類型我們現在就已經使用到了,它們分別是:名為cin的istream對象——它的作用是從鍵盤和磁盤文件這樣的輸入源中讀取數據;以及名為cout的ostream——它的作用是輸出程序產生的內容。
自測題
1-12.請描述一下存儲在double類型對象中的值。
1-13.請說出兩個double對象的操作名稱。
1-14.請描述一下存儲在int類型對象中的值。
1-15.請說出兩個int對象的操作名稱。
1-16.請描述一下存儲在string類型對象中的值。
1-17.上面哪種類型的對象中只存儲一個值?