U E D R , A S I H C RSS

5�용C++스터디/�래스��

�래스 ��


���란?
�체지향 프로그래�� 핵심�� 개� 가운� 하나.
기존� �래스 위�서 새로운 �래스를 �성할 수 있는 능력� 가르킨다.
즉 어떤 �래스가 다른 �래스� 성질� 물려받는 것.


예))
사람 - �름, 나�, 살고있는곳,... (기본�래스)
�장� - �장명,월급... (서브�래스)
학� - 학�ID,... (서브�래스)


�장�->사람<-학�

예2)��할 기본�래스 구축하기

~cpp 
#include<iostream.h>
#include<string.h>

#define MAX_LEN 81

class person{
protected:
	char fname[MAX_LEN];
	char lname[MAX_LEN];
	int age;
public:
	void set_fname( char fn[] ) { strcpy(fname, fn); };
	void set_lname( char ln[] ) { strcpy(lname, ln); };
	void set_age( int a ) { age=a; };
	char *get_name( char *fullname );
	int get_age(void) {return age;};
	person(char fn[] = "blank", char ln[] = "blank");
};

person::person( char fn[],char ln[] )
{
	strcpy(fname, fn);
	strcpy(lname, ln);
	age = -1;
}

char *person::get_name(char fullname[])
{
	strcpy(fullname, fname);
	strcat(fullname, " ");
	strcat(fullname, lname);

	return fullname;
}
	

~cpp 

int main()
{
	char full[MAX_LEN+MAX_LEN];

	person cho("Cho", "JaeHwa");
	cho.set_age(19);

	person blank;

	cout<<"\nperson cho : "<<cho.get_name(full);
	cout<<endl<<"age : "<<cho.get_age();
	
	cout<<"\nperson blank : "<<blank.get_name(full);
	cout<<endl<<"age : "<<blank.get_age();
	cout<<endl;

	return 0;
}


private 대신 protected를 사용�유

private는 ë‚´ë€ì�˜ 멤버함수ì—�서만 엑세스가 가능, 즉 리스팅ì�˜ 다른 ë€ë„ì—�서는 ë�°ì�´í„°ë©¤ë²„나 ê°’ì—� 엑세스하는 것ì�„ 막는다.
하지만 ��하려면 private값� � 기본 �래스�서 ��한 �래스�서 �접 엑세스 한는 것� 혀용하고 싶� 것�다.
�� protected키워들를 사용해서 현재�래스와 ��하는 �래스�게만 엑세스를 허용한다.


예2-1) 서브 �래스 추가하기

~cpp 
class employee : public person{
protected:
	long salary;
public:
	void set_salary( long sal ){ salary=sal; };
	long get_salary(){return salary;};
	employee(char fn[]="e_black",char ln[]="e_blank");
};

~cpp 
employee::employee( char fn[], char ln[]) :person(fn, ln)
{
	salary = 0;
}

~cpp 
	employee park("Park","Ji-sung");
	park.set_salary( 100000000);
	park.set_age(24);

	cout<<"\nEmployee park : "<< park.get_name(full);
	cout<<endl<<"age : "<<park.get_age();
	cout<<endl<<"salary : "<<park.get_salary();
	cout<<endl;
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:19
Processing time 0.0216 sec