我們定義一個數據類型稱為Time,用于記錄一天的時間,以此作為第二例自定義數據結構。小時、分、秒是構成時間的各種信息,這些都是結構體的實例變量。
The first step is to decide what type each instance variable should be. It seems clear that hour andminute should be integers. Just to keep things interesting, let’s make secondadouble, so we can record fractions of a second. Here’s what the structure definition looks like: 第一步要決定每個實例變量的類型。小時和分應該是整型。這回我們搞個有趣的,把秒定義為double型,以便記錄秒的小數部分。下面是結構體的定義代碼:
~~~
struct Time {
int hour, minute;
double second;
};
~~~
我們可以按常規方式創建Time對象:
~~~
Time time = { 11, 59, 3.14159 };
~~~
此對象的狀態圖如下:

“實例”一詞有時用于探討對象的問題,因為每個對象都是某種類型的實例(或示例)。之所以稱之為實例變量,是因為某種類型的每個實例都是該類型實例變量的一個備份。
- 第1章 編程之路
- 1.1 什么是編程語言
- 1.2 什么是程序
- 1.3 什么是調試
- 1.4 形式語言與自然語言
- 1.5 第一個程序
- 1.6 術語表
- 第2章 變量和類型
- 2.1 更多的輸出
- 2.2 值
- 2.3 變量
- 2.4 賦值
- 2.5 輸出變量
- 2.6 關鍵字
- 2.7 操作符
- 2.8 操作順序
- 2.9 操作符
- 2.10 組合
- 2.11 術語表
- 第3章 函數
- 3.1 浮點數
- 3.2 double到int的轉換
- 3.3 數學函數
- 3.4 函數組合
- 3.5 添加新函數
- 3.6 定義與使用
- 3.7 多函數編程
- 3.8 參數與參數值
- 3.9 參數和變量的局部性
- 3.10 多參函數
- 3.11 有返回值的函數
- 3.12 術語表
- 第4章 條件和遞歸
- 4.1 取模操作符
- 4.2 條件執行
- 4.3 選擇執行
- 4.4 鏈式條件
- 4.5 嵌套條件
- 4.6 return語句
- 4.7 遞歸
- 4.8 無窮遞歸
- 4.9 遞歸函數的棧圖
- 4.10 術語表
- 第5章 有返回值的函數
- 5.1 返回值
- 5.2 程序開發
- 5.3 組合
- 5.4 重載
- 5.5 布爾值
- 5.6 布爾變量
- 5.7 邏輯操作符
- 5.8 布爾函數
- 5.9 從main函數返回
- 5.10 深入遞歸
- 5.11 思路跳躍
- 5.12 又一個例子
- 5.13 術語表
- 第6章 迭代
- 6.1 多次賦值
- 6.2 迭代
- 6.3 while語句
- 6.4 制表
- 6.5 二維表
- 6.6 封裝和泛化
- 6.7 函數
- 6.8 再說封裝
- 6.9 局部變量
- 6.10 再說泛化
- 6.11 術語表
- 第7章 字符串那些事兒
- 7.1 字符串的容器
- 7.2 apstring變量
- 7.3 從字符串中提取字符
- 7.4 字符串長度
- 7.5 遍歷
- 7.6 一個運行時錯誤
- 7.7 find函數
- 7.8 我們自己的find版本
- 7.9 循環與計數
- 7.10 增量與減量操作符
- 7.11 字符串連接
- 7.12 apstring是可變的
- 7.13 apstring是可比較的
- 7.14 字符分類
- 7.15 其他apstring函數
- 7.16 術語表
- 第8章 結構體
- 8.1 復合值
- 8.2 Point對象
- 8.3 訪問實例變量
- 8.4 對結構體的操作
- 8.5 作為參數的結構
- 8.6 傳值調用
- 8.7 傳引用調用
- 8.8 矩形
- 8.9 作為返回值的結構
- 8.10 按引用傳遞其他類型
- 8.11 獲取用戶輸入
- 8.12 術語表
- 第9章 再談結構體
- 9.1 Time結構體
- 9.2 printTime函數
- 9.3 對象函數
- 9.4 純函數
- 9.5 const參數
- 9.6 修改函數
- 9.7 填充函數
- 9.8 哪個最佳?
- 9.9 增量開發vs高屋建瓴
- 9.10 泛化
- 9.11 算法
- 9.12 術語表
- 第10章 向量
- 10.1 元素訪問
- 10.2 向量的復制
- 10.3 for循環
- 10.4 向量的長度
- 10.5 隨機數
- 10.6 統計
- 10.7 隨機數的向量
- 10.8 計數
- 10.9 檢查其他值
- 10.10直方圖
- 10.11一次遍歷的方案
- 10.12隨機種子
- 10.13術語表
- 第11章 成員函數
- 11.1 對象和函數
- 11.2 print
- 11.3 隱式變量訪問
- 11.4 另一個例子
- 11.5 再一個例子
- 11.6 更復雜的例子
- 11.8 初始化還是構造?
- 11.7 構造函數
- 11.9 最后一個例子
- 11.10 頭文件
- 11.11 術語表
- 第12章 對象的向量
- 12.1 組合
- 12.2 紙牌對象(Card)
- 12.3 printCard函數
- 12.4 equals函數
- 12.5 isGreater函數
- 12.6 紙牌的向量
- 12.7 printDeck函數
- 12.8 查找
- 12.9 二分查找
- 12.10 牌堆與子牌堆
- 12.11 術語表
- 第13章 基于向量的對象
- 13.1 枚舉類型
- 13.2 switch語句
- 13.3 牌堆
- 13.4 另一個構造函數
- 13.5 Deck成員函數
- 13.6 洗牌
- 13.7 排序
- 13.8 子牌堆
- 13.9 洗牌與發牌
- 13.10 歸并排序
- 13.11 術語表
- 第14章 類與不變式
- 14.1 私有數據和私有類
- 14.2 什么是類?
- 14.3 復數
- 14.4 訪問函數(Accessor functions)
- 14.5 輸出
- 14.6 復數相關函數(一)
- 14.7 復數相關函數(二)
- 14.8 不變式
- 14.9 先決條件
- 14.10 私有函數
- 14.11 術語表
- 第15章 文件輸入/輸出與apmatrix類
- 15.1 流
- 15.2 文件輸入
- 15.3 文件輸出
- 15.4 解析輸入
- 15.5 解析數字
- 15.6 集合數據結構Set
- 15.7 apmatrix類
- 15.8 距離矩陣
- 15.9 一個更合理的距離矩陣
- 15.10 術語表