天天看點

c++ | 訓練01

#include <string>

#include <iostream>

#include <ostream>

// 定義銷售商品類

// 1. 類體可以為空,類體定義組成該類型的資料和操作

// 2. 資料稱為資料成員

// 3. 類可以包含0個 到 多個private 或 public通路标号

// 4. 通路标号控制類成員在類外部是否可通路。

// 5. 使用該類的代碼可能隻能通路public 成員

// 6. 定義了類,也就是定義了一種新的類型

// 7. 類名就是該類型的名字

// 8. 類不是在類定義裡定義資料成員時初始化資料成員

// 9. 通過稱為構造函數的特殊成員函數控制初始化

// 10. 類的頭檔案,名字在使用前必須先聲明或定義

// 11. 由多個檔案組成的程式需要一種方法連接配接名字的使用和聲明,c++通過頭檔案實作

// 12. 頭檔案一般包含類的定義,extern變量的聲明和函數聲明。

// 13. 使用或定義這些實體的檔案要包含适當的頭檔案。

// 14. 設計頭檔案,記住定義和聲明的差別很重要,定義隻能出現一次,而聲明可以出現多次

// 15. extern int ival = 10 ; 初始化了,是以是定義

// 16. double rate; 沒有extern,是以是定義

// 17. 構造函數是特殊的成員函數,與類同名,沒有傳回類型,構造函數也有形參(可能為空)和函數體

// 18. 一個類可以有多個構造函數

class Sales_item

{

// 1. 操作符重載和友元關系

// 2. 操作符定義為非成員函數時,通常必須将他們設定為鎖操作類的友元

// 3. 在某些情況下,允許特定的非成員函數通路一個類的私有成員,同時仍然阻止一般的通路。

// 4. 友元(friend)機制允許一個類将對齊非公有成員的通路授予指定的函數或類。

// 5. 友元聲明以關鍵字friend開始,隻能出現在類定義的内部

// 6. 友元聲明可以出現在類中任何地方

// 7. 通常将 友元聲明成組地放在類定義的開始或者結尾

friend std::ostream&

operator>>(std::istream&, Sales_item&);

friend std::ostream&

operator<<(std::ostream&,const Sales_item&);

private:

/* data */

std::string isbn; // 圖書編号

unsigned units_sold;// 銷售機關

double revenue; //收入

public:

// 1. 定義Sales_item的構造函數,這個函數的形參表和函數體為空

// 2. 冒号和花括号之間的代碼稱為構造函數初始化清單

// 3. 構造函數初始化清單為類的一個或多個資料成員指定初值

// 4. 初始化清單,跟在構造函數形參表之後,以冒号開頭

// 5. 構造函數初始化是一系列成員名,每個成員後面是括在圓括号中的初始值

// 6. 多個成員的初始化用逗号分隔

// 7. 如果沒有為一個類顯試定義任何構造函數,編譯器将自動為這個類生成預設構造函數

// 8. 由編譯器建立的預設構造函數通常稱為合成的預設構造函數

// 9. 有類類型的成員,則會調用該成員所屬類自身的預設構造函數實作初始化

// 10. 内置類型成員的初始值依賴于對象如何定義,如果對象在全局作用域中定義(即不在任何函數中),或定義為靜态局部對象,這些成員将被初始化為0

// 11. 如果對象在局部作用域中定義,則這些成員沒有初始化

Sales_item(/* args */): units_sold(0),revenue(0.0){};

~Sales_item();

};

Sales_item::Sales_item(/* args */)

{

}

Sales_item::~Sales_item()

{

}