コンストラクタとデストラクタの基礎
CoddyのC++ジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 10/104。
constructor は、オブジェクトが作成されたときに自動的に実行される特別なメソッドです。destructor は、オブジェクトが destroyed されたときに実行されます。
Default constructor
class Book {
private:
std::string title;
int pages;
public:
Book() {
this->title = "Unknown";
this->pages = 0;
}
};パラメーター付きコンストラクター
Book(std::string title, int pages) {
this->title = title;
this->pages = pages;
}コンストラクターのオーバーロード:複数のコンストラクター
class Book {
private:
std::string title;
int pages;
public:
Book() {
this->title = "Unknown";
this->pages = 0;
}
Book(std::string title) {
this->title = title;
this->pages = 0;
}
Book(std::string title, int pages) {
this->title = title;
this->pages = pages;
}
};デストラクタ:オブジェクトが破棄されたときに実行される
class Book {
public:
~Book() {
std::cout << "Book destroyed" << std::endl;
}
};異なるコンストラクタを使用したオブジェクトの作成
Book book1; // デフォルトコンストラクタ
Book book2("Harry Potter"); // 1つのパラメータ
Book book3("1984", 328); // 2つのパラメータコンストラクターは戻り値の型を持たず、class と同じ名前を持ちます。デストラクターは ~ClassName() を使用し、オブジェクトがスコープ外に出ると、生成された順序とは逆の順序で自動的に呼び出されます。
チャレンジ
中級Product classを、3つのオーバーロードされたconstructorとdestructorとともに作成します:
- 3-parameter constructor: name、price、stock
- 2-parameter constructor: name、price(stock = 0)
- Default constructor: name = "Unknown"、price = 0、stock = 0
- destructor:
"Destroying: <name>"を出力します
自分で試してみよう
#include <iostream>
#include "Product.h"
int main() {
std::string name;
int price, stock;
std::getline(std::cin, name);
std::cin >> price >> stock;
Product product1(name, price, stock);
Product product2("Keyboard", 79);
Product product3;
std::cout << "Product 1: " << product1.getName() << " - $" << product1.getPrice() << " (Stock: " << product1.getStock() << ")" << std::endl;
std::cout << "Product 2: " << product2.getName() << " - $" << product2.getPrice() << " (Stock: " << product2.getStock() << ")" << std::endl;
std::cout << "Product 3: " << product3.getName() << " - $" << product3.getPrice() << " (Stock: " << product3.getStock() << ")" << std::endl;
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
3コンストラクタとデストラクタ
デフォルトコンストラクタパラメータ付きコンストラクタコピーコンストラクタムーブコンストラクタコンストラクタ初期化リスト委譲コンストラクタデストラクタ徹底解説Rule of Three / Five / Zero復習 - Stringクラス6演算子オーバーロード
演算子オーバーロード入門算術演算子のオーバーロード比較演算子のオーバーロードストリーム演算子代入演算子のオーバーロード[] と () の演算子オーバーロード型変換演算子復習 - Matrixクラス自分で練習してみよう: C++オンラインコンパイラ