Различия в определениях конструктора C ++ в приведенном ниже коде

Я новичок в C ++. Учимся конструкторам. Пожалуйста, обратитесь к двум кодам, указанным ниже, и укажите причину, по которой код 2 не работает. Благодарю.

Код 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 НЕ работает?

-1

Решение

По некоторым странным причинам вам не разрешено повторять значение по умолчанию для параметра:

class Box
{
int x;
public:
Box(int a=0);
//------------^  given here
void print();
};

Box::Box(int a=0)
//------------^^  must not be repeated (even if same value)
{
x = a;
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]