#include <iostream> class testclass { static int count; int id; public: testclass(); int get_id(); }; int testclass::count = 0; testclass::testclass() { id = ++count; std::cout << "ID " << id << " のオブジェクトを作成します。" << std::endl; } int testclass::get_id() { return id; } int main() { std::cout << "main()関数開始" << std::endl; testclass obj1, obj2; // 後で同名(obj1)のオブジェクトを作成する std::cout << __LINE__ << ": このオブジェクトのIDは " << obj1.get_id() << " です。" << std::endl; std::cout << __LINE__ << ": このオブジェクトのIDは " << obj2.get_id() << " です。" << std::endl; std::cout << "for文に入ります。" << std::endl; for (int i = 0; i < 3; i++) { std::cout << "ループ " << i + 1 << std::endl; testclass obj1; // main()関数で宣言したオブジェクトと同じ名前のオブジェクトを改めて作成 std::cout << __LINE__ << ": このオブジェクトのIDは " << obj1.get_id() << " です。" << std::endl; } std::cout << "for文の終わりです。" << std::endl; std::cout << "main()関数終了" << std::endl; return 0; }
このソースは教科書に書いてあった奴です。
写真のようになるために、そこにデストラクターを追加したいのですが。
#include <iostream> class testclass { static int count; int id; public: testclass(); ~testclass();デストラクター宣言? int get_id(); }; int testclass::count = 0; testclass::testclass() { id = ++count; std::cout << "ID " << id << " のオブジェクトを作成します。" << std::endl; } int testclass::get_id() { return id; } //こんな感じでしょうか? int testclass::~testclass() { std::cout << "ID " << id << " のオブジェクトを破棄します。" << std::endl; } int main() { std::cout << "main()関数開始" << std::endl; testclass obj1, obj2; // 後で同名(obj1)のオブジェクトを作成する std::cout << __LINE__ << ": このオブジェクトのIDは " << obj1.get_id() << " です。" << std::endl; std::cout << __LINE__ << ": このオブジェクトのIDは " << obj2.get_id() << " です。" << std::endl; std::cout << "for文に入ります。" << std::endl; for (int i = 0; i < 3; i++) { std::cout << "ループ " << i + 1 << std::endl; testclass obj1; // main()関数で宣言したオブジェクトと同じ名前のオブジェクトを改めて作成 std::cout << __LINE__ << ": このオブジェクトのIDは " << obj1.get_id() << " です。" << std::endl; } std::cout << "for文の終わりです。" << std::endl; std::cout << "main()関数終了" << std::endl; return 0; }
また、訂正など必要がありましたらよろしくお願いします。
このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
お手本と違ってどういう結果になるのかを質問文に含めてください。
> testclass::testclass() { //デストラクターの定義
これコンストラクタですよ?
更新後のコードで何が期待通りではないですか。
きちんと動いてるように見えますが、問題は何でしょうか
@質問者 tata38669389さん
ご提示の「こんな感じでしょうか?」のコードはコンパイルが通りませんが。 それを含めてのご質問でしょうか。
@y_waiwaiさん
> きちんと動いてるように見えますが、問題は何でしょうか
「画像にあるきちんと動いている場合の出力のようにコードを書くにはどうしたら?」という質問です。(質問文が分かりやすいかどうかはさて置くとして)もう少し読み込んであげても良いと思います。
回答1件
あなたの回答
tips
プレビュー