저는 C + +의 초보자입니다. 학습 생성자. 아래에 언급 된 두 가지 코드를 참조하고 코드 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