struct Date {
int d, m , y;
void init_date(Date& d, int, int, int);
void add_year(int n);
void add_month(Date& d, int n);
void add_day(Date& d, int n);
}
Date my_birthday;
void f()
{
Date today;
today.init(16, 10, 1996);
my_birtday.init(30, 12, 1950);
Date tomorrow = today;
tomorrow.add_day(1);
// ...
}
質問A:上記のスニペットでは、ありません: 日明日=今日。 構造体日付内に "コピーコンストラクタ"が存在しないという意味で が間違っています。私はそこに知っている "デフォルトのコンストラクタ"自動 コンパイラによって生成されます - しかし、私は正確に何か、または正確にどのようにそれは 作品(それはメンバークラスのデフォルトコンストラクタを呼び出すことができますが、それは doesn ' t initialize:int i;そしてそのようなもの)。コンパイラのデフォルトのコンストラクタがどのように動作するのですか? PG:224 Stroustrup氏 - C++プログラミング言語、3E
質問B:私たちはこのような何かを挿入する必要があります: のconst日&日(constの日& r)を、 が正しいですか?しかし、上記コンストラクタは、1つの引数を渡すことを意味します( 「today」への参照)。だから、どのように "初期化":"明日の日付=今日 "関数呼び出しに変換:明日(今日); 「マジック」はここにありますか?
質問C:オペレータの形式は何ですか、新規ですか? Stroustrupは別の方法でそれを を使用しますが、すべての用途の明確なリストはありません。これまでのところ、私は を見つけることができました: new; 新しいタイプ[サイズ]; 新しいタイプ(サイズ)。新しいタイプ; これはどこにリストされていますか?私は何かを逃したことがありますか?
1つにつき1つの質問をしてください。 –
'これはどこにリストされていますか?/どこにもありますか? 'はい、C++の本にあります。 –
Lookupのデフォルトコンストラクタ/コピーコンストラクタと代入演算子 - コンパイラが参考にこれらを生成します。 – Nim