C++自修入門實境秀、C++ Primer 5版研讀秀 39/ ~v7類別-練習7.2-20190901_082619





but that there is value in consistency.

但維持前後一致有其價值。

→然而保持一定的規格與格式是有其必要,也有其優勢的。

Other indentation conventions will become clear as our programs become more sophisticated.

1.5類別簡介(Introducing Classes)

類別型別(class types) vs 內建型別(built-in types)

In fact, a primary focus of the design of C++ is to make it possible to define class types that behave as naturally as the builtin types. 第39集 3:26:00



第39集 3:25:00

We’ll implement this class in later chapters as we learn more about types,expressions, statements, and functions.

我們會在後續章節實作這個類別,在我們學習更多型別、運算式、述句,以及函式的相關知識之後。

④倒序重組 →在我們學習更多型別、運算式、述句,以及函式的相關知識之後,我們會在後續章節實作這個類別。







頁21

既然我們已經知道可以把什麼運算用在Sales_item物件上。

這裡的「Sales_item物件」其實就是前一頁所說的「型別為Sales_item的一個物件」:



我們經常把「型別為Sales_item的一個物件」,縮略為「一個Sales_item物件」,或甚至更簡短的「一個Sales_item」。

這樣「Sales_item物件」的表述,其實是縮語!不要弄錯對象了。這樣類別class,與型別 type就比較不易混淆了。



這個程式以兩個#include指示詞開始,其中一個使用了一種新的形式。來自標準程式庫的標頭被包在角括號(angle brackets,<>)中。並非標準程式庫一部分的標頭則包在雙引號 (double quotes,"")中。(第39集,40:00



頁22

使用檔案重導

第39集,48:00

$ addltems <infile >outfile

假設$是系統提示字元,而我們的加法程式已經編譯為了一個叫做addltems.exe的可執行 檔(或UNIX系統上的addltems ),這道命令將會從名為infile的檔案讀取交易記錄,並將其輸出寫到目前目錄中一個名叫outfile的檔案。





這樣「Sales_item物件」的表述,其實是縮語!不要弄錯對象了。這樣類別class,與型別 type就比較不易混淆了。



這個程式以兩個#include指示詞開始,其中一個使用了一種新的形式。來自標準程式庫的標頭被包在角括號(angle brackets,<>)中。並非標準程式庫一部分的標頭則包在雙引號 (double quotes,"")中。(第39集,40:00



頁22

使用檔案重導

第39集,48:00

$ addltems <infile >outfile

假設$是系統提示字元,而我們的加法程式已經編譯為了一個叫做addltems.exe的可執行 檔(或UNIX系統上的addltems ),這道命令將會從名為infile的檔案讀取交易記錄,並將其輸出寫到目前目錄中一個名叫outfile的檔案。

已經編譯為了→已經編譯成了



練習1.20

1) Sales_item item1, item2,item3,item4;//這只能處理剛好4筆交易記錄





已經編譯為了→已經編譯成了



練習1.20

1) Sales_item item1, item2,item3,item4;//這只能處理剛好4筆交易記錄

std::cin >> item1 >> item2>>item3>>item4;

std::cout << item1 + item2 +item3+item4<< std::endl; //這也寫成了加總,並非題意,應改寫成:

std::cout << item1 << '\n'<<item2 << '\n' << item3 << '\n' <<item4 << std::endl;//才合題意 第39集,1:17:20

2) //Sales_item item1,itemsum;

//while (std::cin >> item1)

//{

// itemsum += item1;//這是將各筆交易記錄各售出數量、營業額、平均售價加總,並非題意

//}

//std::cout << itemsum << std::endl;





for (Sales_item Si:vecSi )

{

cout << Si << endl;

}

參考練習2.41

練習1.21

第39集,1:19:10

Sales_item item,itemPrevious;

while (cin>>item)

{

if (item.isbn()==itemPrevious.isbn())

{

cout<<item + itemPrevious<<endl;





cout<<item + itemPrevious<<endl;

break;

}

itemPrevious = item;

}

參考練習2.41

第39集,1:25:28

練習1.22

Sales_item item, itemPrevious, itemSum;

while (cin>>item)

{

if (item.isbn()==itemPrevious.isbn())

{





}

}

itemPrevious = item;

}

cout << itemSum+itemPrevious << endl;

頁23

第39集 1:59:20

1.5.2成員函式初探

什麼是成員函式?

Member functions are sometimes referred to as methods .

成員函式有時被稱作方法(methods)。

method Synonym for member function.(頁27)

不是普通函式,而是成員函式才會叫做方法!





1.5.2成員函式初探

什麼是成員函式?

Member functions are sometimes referred to as methods .

成員函式有時被稱作方法(methods)。

method Synonym for member function.(頁27)

不是普通函式,而是成員函式才會叫做方法!

第39集 2:4:50

Ordinarily, we call a member function on behalf of an object. 第39集 2:12:20

一般來說,我們會以一個物件的身分來呼叫一個成員函式。

這裡on behalf of 的翻法就與後面不同。

第39集 2:16:20

頁24

練習1.23





method Synonym for member function.(頁27)

不是普通函式,而是成員函式才會叫做方法!

第39集 2:4:50

Ordinarily, we call a member function on behalf of an object. 第39集 2:12:20

一般來說,我們會以一個物件的身分來呼叫一個成員函式。

這裡on behalf of 的翻法就與後面不同。

第39集 2:16:20

頁24

練習1.23

第39集 2:19:30

Sales_item item, itemPrevious;unsigned ctr=1;

while (cin>>item)

{





Ordinarily, we call a member function on behalf of an object. 第39集 2:12:20

一般來說,我們會以一個物件的身分來呼叫一個成員函式。

這裡on behalf of 的翻法就與後面不同。

第39集 2:16:20

頁24

練習1.23

第39集 2:19:30

Sales_item item, itemPrevious;unsigned ctr=1;

while (cin>>item)

{

if (item.isbn()==itemPrevious.isbn())

{

++ctr;





cout << itemPrevious.isbn() << " 有 " << ctr << " 筆" << endl;

}

}

itemPrevious = item;

}

cout << itemPrevious.isbn() << " 有 " << ctr << " 筆" << endl;

第39集 2:40:20

練習1.24

未詳,不就和練習1.23一樣嗎

參見下節1.6 Bookstore 程式

1.6 Bookstore 程式

第39集 2:44:55







cout << itemPrevious.isbn() << " 有 " << ctr << " 筆" << endl;

第39集 2:40:20

練習1.24

未詳,不就和練習1.23一樣嗎

參見下節1.6 Bookstore 程式

1.6 Bookstore 程式

第39集 2:44:55



We’ll assume that all the transactions for each ISBN are grouped together in the input.:我們假設每個輸入的ISBN都是被放在一起的

中文版又翻錯了:

我們會假設輸出中每個ISBN的所有交易記錄都被歸成一組。



欄位(field)在這裡仍是變數的意思,只不過在類別之中,為其類別內之一成員,故名成員變數,也叫field,就如MS Word中field是翻成「功能變數」。





We’ll assume that all the transactions for each ISBN are grouped together in the input.:我們假設每個輸入的ISBN都是被放在一起的

中文版又翻錯了:

我們會假設輸出中每個ISBN的所有交易記錄都被歸成一組。



欄位(field)在這裡仍是變數的意思,只不過在類別之中,為其類別內之一成員,故名成員變數,也叫field,就如MS Word中field是翻成「功能變數」。

頁25

第39集 3:4:50 3:19:00

練習1.25

int main() {

Sales_item total; //用來存放運行總和的變數 // variable to hold the running sum

//英文版total、trans這兩個變數的註解就弄倒了,中文版也沒更正!今徑正

/* in this book 1.6. The Bookstore Program,the comments of the two variables "total" and "trans" are inverse.

"Sales_item total; // variable to hold data for the next transaction





dot operator 點號運算子(參見中文版23頁)

頁76

練習2.41

練習2.40

§1.5.1(頁22)

練習1.20

第39集 3:21:40

struct Sales_data {

std::string bookNo;// { "882-33-" };

double revenue; //{ 24.44 };

unsigned soldQ; //{ 1 };

double bookSize; //{ 24.2 };

};

留言

熱門文章