重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Java開発をこれまでやってきたのですが、
C++を学ぼうとしています。
C++では下記のように宣言した場合hogeは
インスタンスになり、Hogeクラスのコンストラクタが呼ばれるようなのですが、
Hoge hoge;

Hogeクラスのコンストラクタが下記のような引数を持つものしか定義されていなかった場合は
どの様な振る舞いをするのでしょうか?
Hoge(int num);
Javaでは引数の有るコンストラクタしか宣言しなかった場合はデフォルトコンストラクタは
作られなかったと思うのですが、c++では引数のないデフォルトコンストラクタができてるのでしょうか?

また、デフォルトコンストラクタが出来ていなかった場合、
Hoge hoge;
というようにプリミティブ型のような変数宣言の仕方で引数有りのコンストラクタを呼ぶことは出来るのでしょうか?

A 回答 (1件)

> Javaでは引数の有るコンストラクタしか宣言しなかった場合はデフォルトコンストラクタは


> 作られなかったと思うのですが、c++では引数のないデフォルトコンストラクタができてるのでしょうか?
Java と同じく、何らかのコンストラクタを定義してしまうとデフォルトコンストラクタは作られません。

> また、デフォルトコンストラクタが出来ていなかった場合、
> Hoge hoge;
> というようにプリミティブ型のような変数宣言の仕方で引数有りのコンストラクタを呼ぶことは
> 出来るのでしょうか?
Hoge hoge(10);
という具合に呼べます。
http://msdn.microsoft.com/ja-jp/library/s16xw1a8 …

あと、C++ では(引数なし)コンストラクタだけではなく、コピーコンストラクタ、デストラクタ、および代入演算子も定義しなければデフォルトのものが生成されるので注意してください。
http://docs.oracle.com/cd/E19205-01/820-1213/bka …
http://tercel-tech.hatenablog.com/entry/2012/11/ …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!