私はデフォルトのコンストラクタの間で混乱しています。コードB ParentClass(int id)
がなぜこれはデフォルトのコンストラクタと見なされませんか?
なぜコードは「ISNないデフォルトコンストラクタとして考慮されるのに対し、A(int news)
はデフォルトコンストラクタとはみなされない理由を私はコードAIで2つのコード、コードAとコードB
をしたことは理解していない コンパイルできますが、コードBはコンパイルできます。編集後
コード
class A{
public:
int s;
A(int news){
s = news;
}
void print()
{
cout << s;
}
};
int main()
{
A a;
a.print();
}
コードB
class ParentClass{
public:
int id;
ParentClass(int id){
this->id = id;
}
void print(){
cout << id <<endl;
}
};
class ChildClass:public ParentClass
{
public:
int id;
ChildClass(int id):ParentClass(1)
{
this->id = id;
}
};
int main()
{
ChildClass c(2);
c.print();
}
だから、コードAはデフォルト以外のコンストラクタを持っていますか?なぜ私はそれを実行すると、それはデフォルトのコンストラクタがないと言うでしょうか?コードBの場合は実行されます。 – overflowhow
@overflowhow、*コード*を実行しようとしていますか? – SergeyA
私は、コードAを実行すると、デフォルトのコンストラクタが定義されていないというエラーが表示されます。しかし、コードBを実行すると、正常に実行されます。もう1つの質問は、デフォルトコンストラクタを持つ必要がありますか? – overflowhow