생성자 (Constructor)
생성자 (Constructor)는 클래스 객체를 선언할 때 자동으로 수행되는 멤버함수로 클래스 이름과 동일하며 public멤버로 지정되어야 한다. 생성자 함수의 return 값이 없으므로 void형이지만 이마저 생략하고 사용한다. 생성자 함수는 오버로드가 가능하고 매개변수를 전달할 수 있다. 일반 멤버함수로도 데이터 멤버들의 값을 초기화할 수 있지만, 생성자 함수는 클래스 객체가 선언됨과 동시에 자동적으로 실행하므로 일반 멤버 함수보다 더욱 편리하다.
예제
#include <iostream>
using namespace std;
class score {
private:
char* name;
int kor;
int eng;
double ave;
public:
score(char* n, int k, int e); //생성자 함수의 오버로드
score(char* n, int k); //생성자 함수의 오버로드
void sum_ave();
void output();
};
score::score(char* n, int k, int e) //첫번째 생성자 함수 정의
{
name = n;
kor = k;
eng = e;
}
score::score(char* n, int k) //두번째 생성자 함수 정의
{
name = n;
kor = k;
cout << name << "의 영어점수? ";
cin >> eng; //키보드로 영어 점수 입력
}
void score::sum_ave()
{
ave = double(kor + eng) / 2.0;
}
void score::output()
{
cout << "name=" << name << endl;
cout << "kor=" << kor << endl;
cout << "eng=" << eng << endl;
cout << "ave=" << ave << endl;
}
int main()
{
score x((char*)"Hong", 90, 95); //객체 x 생성 //첫 번째 생성자 함수 사용
score y((char*)"Kim", 85); //객체 y 생성 //두 번째 생성자 함수 사용
x.sum_ave();
x.output();
y.sum_ave();
y.output();
return 0;
}
실행 결과
Kim의 영어점수? 90
name=Hong
kor=90
eng=95
ave=92.5
name=Kim
kor=85
eng=90
ave=87.5
참고
1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13
'C++ 기초 1' 카테고리의 다른 글
[C++] 3-3 소멸자 (Destructor) 설명 및 예제 (0) | 2023.12.12 |
---|---|
[C++] 3-2 클래스 생성자와 포인터 (0) | 2023.12.11 |
[C++] 2-10 클래스 객체 반환 (return) (3) | 2023.12.06 |
[C++] 2-9 함수의 객체 전달 (value 및 포인터) (1) | 2023.12.05 |
[C++] 2-8 클래스 객체의 대입 (2) | 2023.12.04 |