1. 문제

 

2. Person 클래스의 객체를 생성하는 main() 함수는 다음가 같다.

 

(2). 디폴트 매개 변수를 가진 하나의 생성자를 작성하고 프로그램을 완성하라.

 

 

2. 결과

 

 

 

 

3. 코드

 

#include <iostream>
#include <string>
using namespace std;

class Person {
	int id;
	double weight;
	string name;
public : 
	Person(int id=1, string name="Grace", double w=20.5) 
	{ this->id=id; 
	weight = w; 
	this->name=name; 
	}
	void show() { cout << id << ' ' << weight << ' ' << name << endl; }
};

int main() {
	Person grace, ashley(2, "Ashley"), helen(3, "Helen", 32.5);
	grace.show();
	ashley.show();
	helen.show();
}
		

 

 

4. 설명

 

(1)번에서는 생성자가 디폴트 매개 변수를 가지고 있지 않아서 각각 3개의 생성자를 생성하였지만 (2)에서는 디폴트 매개 변수를 사용하므로써 생성자 하나로 (1)과 동일한 결과를 얻을 수 있다.

 

※ 디폴트 매개 변수를 지정할 시 주의하실 점은 매개변수의 순서 입니다.

 

예를들어 Person(int id, string name="Grace", double w=20.5)로 선언 한 후

 

Person p(5); 로 객체를 생성하면 오류가 발생하지 않습니다.

 

그러나 Person( string name="Grace", int id, double w=20.5) 이렇 듯 디폴트 매개 변수 값이 있는 string 변수 name이 디

폴트 매개 변수 값이 없는 int id보다 먼저 왔을 시 오류가 발생합니다.

 

 

그러므로 디폴트 값이 있는 매개변수를 선언할 시 오른쪽부터 채워져야 합니다.

 

+ Recent posts