C++::オブジェクト生成

オブジェクト生成

CBook   HarryPotter( "ハリーポッター賢者の石",
                  "J.K.ローリング",1900, 52, 0 );

範囲は、"{"から、"}"で囲まれる範囲で。

動的オブジェクト生成

CBook*  pHarryPotter =
        new CBook( "ハリーポッター賢者の石",
                    "J.K.ローリング",1900, 52, 0 );

    CBook*  pStarWars = 
        new CBook( "スターウォーズ暗黒の旅路 上巻",
                    "エレイン・カニンガム", 780, 12, 0 );


    // オブジェクトへのポインタ列
    CBook*  BooksArray[2] = { pHarryPotter, pStarWars };
//.........................................................
//これとおなじ。でも、個別に初期化できないので、これはあまり意味がない。
//CBook* BooksArray[2] = new CBook("");
//CBook* pHarryPotter;
//
//結局、意味は同じなんだが、次のことをせざるをえない。
//CBook* BooksArray[2];
//CBook* pHarryPotter;
//
//new演算子は、確保したメモリー領域に対してCBookのコンストラクタを適用し、
//適切なオブジェクトを生成する。
//pHarryPotter = new CBook("hoge");
//BooksArray[0] = pHarryPotter;
//
//...........................................................
    // オブジェクトの破棄
    delete pHarryPotter;
    delete pStarWars;

図にすると、こんな感じ。