私は初心者です。学習コンストラクタ。下記の2つのコードを参照し、コード2が機能していない理由を説明してください。ありがとう。以下のコードのC++コンストラクタ定義の相違点
コード1:
#include <iostream>
using namespace std;
class Box
{
int x;
public:
Box::Box(int a=0)
{
x = a;
}
void print();
};
void Box::print()
{
cout << "x=" << x << endl;
}
int main()
{
Box x(100);
x.print();
}
コード2:
#include <iostream>
using namespace std;
class Box
{
int x;
public:
Box(int a=0);
void print();
};
Box::Box(int a=0)
{
x = a;
}
void Box::print()
{
cout << "x=" << x << endl;
}
int main()
{
Box x(100);
x.print();
}
コード1が機能していますが、コード2が動作しないのはなぜ?あなたは、パラメータのデフォルト値を繰り返すように許可されていないいくつかの奇妙な理由から
あなたが「動作しない」で何を意味するかについて詳しく説明してください。 –
'Box :: Box(int a = 0)':定義から宣言を分離するときにデフォルト値を再宣言することはできません。 – AndyG
私は、あなたがBox :: Box(int a = 0)を指定したので、コード2は "動かない"と信じています。 Box :: Box(int a)に置き換えます。 – tysonite