- ベストアンサー
コンストラクタ
C++初心者です。 最近、クラスの分野を勉強し始めたのですが、 コンストラクタというものがイマイチしっくり来ずに 頭を抱えています。 コンストラクタというのは一体何をするものなのですか? 絶対必要なのですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まず、クラスっていうのはオブジェクト化しないと使われないんです。 例えば、ケーキを考えてみましょうか。 ケーキのレシピがクラスです。これでは食べられませんよね。 ケーキがオブジェクトです。これは食べられます。 レシピをケーキにすることがコンストラクタ、みたいに考えてください。 今までコンストラクタ無しのプログラムを書いたことしかないんですよね? コンストラクタがないとデフォルトコンストラクタ、っていうのが呼ばれるんです、勝手に。で、そのクラスが使われるようになるって言うわけです。 だから引数に何も与えないでオブジェクトを作るのであればコンストラクタの必要性を感じません。 しかし、引数付きのコンストラクタを使うことがあるんです。 ケーキができた途端に何もしないでも「チョコレートケーキ」って名前がつくみたいに。(例がおかしいかも・・・。) ちょっとわかりました?
その他の回答 (3)
- KenDon
- ベストアンサー率0% (0/2)
コンストラクタ-----オブジェクトを初期化する デストラクタ-------オブジェクトの後処理をする C++を設計した、ストラウストラップは、初期化にこだわったようで、オブジェクトについても、初期化の忘れを防止する仕掛けを用意した。それが、コンストラクタの自動実行らしいです。 通常は、オブジェクトを初期化するコードを書く。 コンストラクタは、オブジェクトが作られるときに、自動で実行されるようになっているので、コンストラクタを呼び出す必要がない。 コンストラクタが1つも定義されていないときでも、裏で自動的にコンストラクタが作られるのです。それが、デフォルトコンストラクタです。 デフォルトコンストラクタは、引数がなく、関数本体も空で、これを実行しても何の意味もないように思えるのですが、C++が、それを必要としているのです。 オブジェクトが作られるときに、プログラマーからは見えない裏の初期化が必要で、その初期化コードは、コンストラクタが実行されるときに実行されるということです。 どのようなクラスにおいてもコンストラクタが実行される必要があるのです。 デフォルトコンストラクタは、コンストラクタを持たないクラスでも必ずコンストラクタを実行させる為にあるのです。
- aodesu
- ベストアンサー率14% (6/42)
クラスが作られるときに、いの一番に呼ばれる。 特に必要ないなら、空のままでいいんじゃないのかなあ? いずれ必要性を感じるときがくることでしょう。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> コンストラクタというものがイマイチしっくり来ずに > 頭を抱えています。 コンストラクタのどこがどう、しっくり来ないのですか? > コンストラクタというのは一体何をするものなのですか? オブジェクトを使う前の初期化/前準備/下ごしらえ を行なうためのものです。 > 絶対必要なのですか? 絶対必要と思う日が絶対やってきます。