멤버 이니셜라이저
Base class 의 초기화를 위해서 원하는 생성자 함수를 호출할수 있게 해주는 것이다. 이때
Base class에서는 생성자 함수 오버라이딩 함수가 반드시 존재 하여야한다.
#include <iostream>
using std::endl;
using std::cout;
class Person
{
int age;
char name[20];
public:
int GetAge() const
{
return age;
}
const char* GetName() const
{
return name;
}
Person(int _age=1, char* _name="noname")
{
age = _age;
strcpy(name, _name);
}
};
class Student:public Person
{
char major[20];//전공
public:
Student(int a,char* _name,char* _major) : Person(a,_name)//멤버 이니셜라이저(a 와 _name을 받을수 있는
{ //생성자 함수를 호출한다.
strcpy(major,_major);
}
const char* GetMajor() const
{
return major;
}
void ShowData() const
{
cout<<"이름 :"<<GetName()<<endl;
cout<<"나이 :"<<GetAge()<<endl;
cout<<"전공 :"<<GetMajor()<<endl;
}
};
int main(void)
{
Student kim(20,"kim","computer");
kim.ShowData();
return 0;
}
이 코드에서 Student(int a,char* _name,char* _major) : Person(a,_name) 부분이 멤버 이니셜라이저를 사용한 부분이다.
const 변수에 대해서 사용을 할때는 변수명(초기화 하고자하는 매개변수) 였지만 class 에서는 class name 을 사용한다.
Base class 의 초기화를 위해서 원하는 생성자 함수를 호출할수 있게 해주는 것이다. 이때
Base class에서는 생성자 함수 오버라이딩 함수가 반드시 존재 하여야한다.
#include <iostream>
using std::endl;
using std::cout;
class Person
{
int age;
char name[20];
public:
int GetAge() const
{
return age;
}
const char* GetName() const
{
return name;
}
Person(int _age=1, char* _name="noname")
{
age = _age;
strcpy(name, _name);
}
};
class Student:public Person
{
char major[20];//전공
public:
Student(int a,char* _name,char* _major) : Person(a,_name)//멤버 이니셜라이저(a 와 _name을 받을수 있는
{ //생성자 함수를 호출한다.
strcpy(major,_major);
}
const char* GetMajor() const
{
return major;
}
void ShowData() const
{
cout<<"이름 :"<<GetName()<<endl;
cout<<"나이 :"<<GetAge()<<endl;
cout<<"전공 :"<<GetMajor()<<endl;
}
};
int main(void)
{
Student kim(20,"kim","computer");
kim.ShowData();
return 0;
}
이 코드에서 Student(int a,char* _name,char* _major) : Person(a,_name) 부분이 멤버 이니셜라이저를 사용한 부분이다.
const 변수에 대해서 사용을 할때는 변수명(초기화 하고자하는 매개변수) 였지만 class 에서는 class name 을 사용한다.