關於class類別是什麼和為何要用他請搭直通車Day07Class類別
目標:要把我房間的書做個統計,總共有150本。
(第一版本土法煉鋼法的code請點上面直通車。)
前言:
想當初看書的時候看到這一章,仔細每個字都看完信心滿滿地覺得“我會了”,然後要開始碼code時又瞬間腦袋空白。
其實class超級簡單,就是一種多功能分類箱
以下是C++三種分類箱:
return a+b;
或是cout << "hello";
等等)的分類箱。int, string
...等等)的分類箱。#include <iostream>
class book { //class本人在這,現在他被我設定叫做book
private: //私人區域,超出這個class裡都拿不到
public: //公共區域,可以在別的class或是main裡面取用
string bookname, author; //書的這些資料用字串
float price; //書的價錢可能有小數點用float(書商很喜歡定價29.99之類的
};
int main(){
book b1; //呼叫一個新的object叫做b1,在book class架構下的
b1.author = "George Dyson";//這個名叫b1的object,author是Geroge Dyson
b1.bookname = "Turing's Cathedral"; // 同上
b1.price = 19.99; //同上
//以下呼叫b1的各種properties出到console
cout << "Book name: " << b1.bookname<<endl;
cout << "Author: " << b1.author<< endl;
cout << "Price: $" << b1.price<< endl;
return 0;
}
Object就是物件本人,那個b1就是一個object
我們開了30天挑戰就是要跟這位”物件“打好交情,發展出溫暖深厚的友誼。
variable是什麼呢?
就是跟電腦說“嘿,幫我在記憶體那邊空出一些空間,我要放東西,謝謝。”
例如打int age = 5;
,等於跟電腦說,哈囉,幫我空出一個4 bytes的地方,這個空間叫age,裡面放5這個數字。
如果還不知道要放什麼,也可以打int age;
,跟電腦說我還不知道放什麼,請幫我清出一個4 bytes空白叫做age的空間,等等再決定放什麼。
Object也是一樣的概念,哈囉電腦,我這有一些新的東西需要空間放,幫我清個叫做b1的空間出來,空間取決於class裡面放的東西的多寡,可以用sizeOf(class名字)來看看class有多大。
有趣的是,在我們蓋好class以後,不管有多雄偉壯觀多少條code,電腦都不會清出記憶體空間給class放,要等object創建以後,才會整理出空間開始執行動作。
就像單純只寫variable,例如string;
給電腦也不會有反應,至少得貼上名字,例如string colour;
才會清出空間。
這就清晰的解釋了class到底是什麼,本質就是一個骨架,一個空白已經有線條的著色本(前幾年很夯的秘密花園那種著色本),沒有內容物的時候是沒有被激活的,只要填入數值資料/在框框內填上色彩就會活起來。
所以
class = 骨架
object = 內容+名字。
用object代替每本書都要分別declar三次variable(書名、作者、價錢)的這個方法看起來更整齊了,但沒有節省很多行的感覺,沒事兒,這是為了要聊聊constructor所需要的基礎。
有沒有方法更方便的方法輸入150本的圖書資訊?
明天接續來聊聊constructor。
Reference: Geeksforgeeks, Wikipedia, Google