此篇是C++物件導向系列第三篇,看之前文章請點Day12物件導向class和Day13物件導向object
上篇Day13提到過,struct是裝variable的分類箱,而class是可以裝variable跟function的分類箱。
在class裡的function叫做method,明天會聊到。
而constructor就是一種特殊款的function。
特殊之處在於,一般來說function要被呼叫到才會執行,
Constructor小常識:
class_name(){ ...內容...  },範例如以下:class Book{
public: 
    Book(){     //這個就是constructor
    cout << “ 我是示範" << endl;
    }
};
int main(){
    Book b1;
} 
console輸出: 我是示範
因為是特殊款,但骨子也是function,所以跟function一樣也可以放在class外面。Class_name::Class_name(){....}
範例如下:
    class Book{
public:
    string bookname, author;
    Book(string bookname, string author);     //這個就是constructor
   
};
Book::Book(string bookname, string author){
    cout << bookname << ", "<< author << endl;
}
int main(){
    Book b1("Cinderella", "Charles Perrault");
} 
console輸出: Cinderella, Charles Perrault
}
很像function,可以用perameter操控輸入的數值。
但在這邊,輸入數值/資料的是一個在book架構下,叫做b1的“object”。
    book b1("Turing's Cathedral", "George Dyson", 19.99);
                //bookname            //author   //price
我們可以注意到每次輸入新的資訊需要下面這四行
    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;
    }
class Book{
private: //私人區域,超出這個class裡都拿不到
public: //公共區域,可以在別的class或是main裡面取用
    string bookname, author; //書的這些資料用字串
    float price; //書的價錢可能有小數點用float(書商很喜歡定價29.99之類的
    
    // **下面這個就是constructor**
    Book(string bookname, string author){ //注意constructor名字跟class是一樣的
        this -> bookname = bookname;//告訴電腦這個perameter bookname代表b1輸入的資料bookname
        this -> author = author;    //告訴電腦這個perameter author代表b1輸入的資料author
    } // 當parameter名字重複時要加上this->告訴電腦”這個“書名等於variable裡的書名
}
int main(){
    book b1("Turing's Cathedral", "George Dyson");
    book b2("Atomic hobbits", "James Clear");
    book b3("Where the craward sings", "Delia Owens");
}
關於this是什麼,過幾天會仔細聊聊。
耶史,三行直接縮減成一行,而且還能在同一排加其他資訊進去。
要修改的時候也不用滑鼠滑滑滑滑超久才能找要更動的那行(眼花撩亂)。
Reference: Geeksforgeeks, Wikipedia, Google, W3School, CSDN