' P '

whatever I will forget

C++ Constructor / Destructor

ほいほい、ついにコンストラクタとデストラク
簡単にいうとクラス内メンバの初期化を行ってくれる素晴らしいやつ。

種類があります
1. デフォルトコンストラク
2. ユーザー仕様のコンストラク

下記例は、2です。1を使う場合、クラス内にコンストラクタを定義しなければいいだけです。

また、コンストラクタはオーバーロードさせることが可能 で、何個でもクラスのデザインによって定義することができます.

class Account {
    private:
         std::string name;
         int balance;
    public:
         //Constructors
         Account() {
              name = "";
              balance = 0;
         Account(std::string name_val) {
              name = name_val;
              balance = 0;
              //引数一個だけでも、int balanceは0に初期化できる
         }
         Account(std::string name_val, int balance_val) {
              name = name_val;
              balance = balance_val;
         }
         //Destructor
         ~Account();
};

int main() {
    {
        Account perorin;
        Account hunyachin("boner");
        Account bobo("paipan", 100)
        //three constructors are called
    }
    //Destructor is called

    Account *ptr = new Account("peropero", 200);
    //Constructor is called
    Delete ptr;
    //Destructor is called
}

ただ、コンストラクタを定義する際に気をつけないといけないのは、
ユーザー仕様のコンストラクタで、Class名() の引数なしコンストラクタを明示的に定義しない場合。
上記の場合、Account prerorin;のオブジェクト生成はコンパイルエラーとなります。

あとは、ポインターの場合は明示的にdeleteをつけてあげないとダメですね〜〜〜