官术网_书友最值得收藏!

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這樣的整數譯者注:作者原文如此,實際上他用的是double類型的浮點數。。并且這些對象可以執行輸入、乘法和加法操作,以此計算出了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.上面哪種類型的對象中只存儲一個值?

主站蜘蛛池模板: 临夏市| 静海县| 囊谦县| 同江市| 攀枝花市| 墨江| 阳朔县| 博罗县| 山东| 阜阳市| 屯昌县| 遂溪县| 青田县| 科技| 谢通门县| 山丹县| 东乌珠穆沁旗| 柏乡县| 武乡县| 寻乌县| 禄丰县| 余干县| 河西区| 宝坻区| 安新县| 金塔县| 荔波县| 观塘区| 松溪县| 滕州市| 确山县| 金沙县| 玉林市| 虹口区| 响水县| 青州市| 迁西县| 松江区| 湖北省| 盈江县| 峨山|