[C++] 클래스 정의.
2012. 1. 27. 16:19ㆍ제2외국어/Windows
클래스는 객체를 사용하기 위한 틀.
[순서]
1. 클래스 정의
2. 클래스 생성 및 사용
3. 멤버함수 알아보기
4. 생성자, 소멸자
위 순서대로 진행하겠습니다.
1. 클래스 정의
이름과 키, 몸무게를 멤버변수로 가지고 있으며,
이름을 출력하는 멤버함수를 가지고 있는 '사람' 이라는 클래스를 정의하겠습니다.
class People
{
public: // 접근권한 설정 ( 정보은닉, 캡슐화 )
// public : 모두 허용 ( 접근 범위 제한 X )
// private, protected : 접근 범위 제한 O ( 자세한 설명은 나중에 따로 )
// 멤버변수
string P_name;
float P_tall;
float P_weight;
// 멤버함수
void PrintOfName()
{
cout << "이름 : " << P_name << endl;
}
}; // 반드시 class 선언 뒤에는 세미 클론(;)
2. 클래스의 생성 및 사용
int main()
{
// 객체 생성
// People 이라는 클래스(틀)로 One, Two라는 객체를 생성했다.
People One, Two;
// 객체 초기화하기. ( 다른 방법도 존재.. 생성자에서 다루겠습니다.)
One.P_name = "한놈";
One.P_tall = 180.4;
One.P_weight = 68.5;
// 멤버함수를 사용하여 출력
One.PrintOfName();
return 0;
}
3. 멤버함수 알아보기
: 멤버함수는 기본적으로 일반함수와 같지만 약간은 다르다. ( 클래스의 멤버이기 떄문에...)
1. 멤버함수를 호출하려면 객체의 이름을 명시해야한다.
2. 멤버함수 안에서는 객체의 이름을 명시하지 않아도 접근이 가능하다.
3. 멤버함수 안에서는 외부에서 접근을 거부한 멤버에도 접근이 가능하다.
( 외부에서는 볼 수 없는 멤버도 안에서는 볼 수 있다는 의미. ---- 접근 제어와 관련 나중에 더! )
멤버함수를 선언하는 방식.
( 2번째 방식이 좀 더 깔끔하다. )
4. 생성자, 소멸자
생성자와 소멸자는 특별한 멤버 함수라고 생각하시면 됩니다.
생성자 : 객체 생성 시 자동으로 호출되는 함수.
소멸자 : 객체 소멸 시 자동으로 호출되는 함수.
-> 생성자 : 준비 , 소멸자 : 정리
: 동작할 수 있게 준비, 다 사용한 뒤 정리.
생성자는 인자가 있냐 없냐로 구분합니다. ( 디폴트 생성자, 인자가 있는 생성자 )
생성자를 사용해 초기화하거나 생성하면서 바로 집어넣는 방법도 사용 가능합니다.
그렇다면 위와 같이 사용하지 않을 때는 생성자가 필요없다?
보통 그렇지만, 꼭 생성자가 필요한 경우가 존재합니다.
const 속성을 가진 변수와 레퍼런스 변수를 가지고 있을 경우.
( 이 경우 반드시 변수들이 초기화가 되어있어야 하기 때문에 반드시 생성자로 생성시 자동으로 초기화를 해주어야 합니다. )
소멸자는 생성자의 이름 앞에 ~를 붙인 형태.
오직 하나만 존재 가능.
별거 없는 클래스.
[순서]
1. 클래스 정의
2. 클래스 생성 및 사용
3. 멤버함수 알아보기
4. 생성자, 소멸자
위 순서대로 진행하겠습니다.
1. 클래스 정의
이름과 키, 몸무게를 멤버변수로 가지고 있으며,
이름을 출력하는 멤버함수를 가지고 있는 '사람' 이라는 클래스를 정의하겠습니다.
class People
{
public: // 접근권한 설정 ( 정보은닉, 캡슐화 )
// public : 모두 허용 ( 접근 범위 제한 X )
// private, protected : 접근 범위 제한 O ( 자세한 설명은 나중에 따로 )
// 멤버변수
string P_name;
float P_tall;
float P_weight;
// 멤버함수
void PrintOfName()
{
cout << "이름 : " << P_name << endl;
}
}; // 반드시 class 선언 뒤에는 세미 클론(;)
2. 클래스의 생성 및 사용
int main()
{
// 객체 생성
// People 이라는 클래스(틀)로 One, Two라는 객체를 생성했다.
People One, Two;
// 객체 초기화하기. ( 다른 방법도 존재.. 생성자에서 다루겠습니다.)
One.P_name = "한놈";
One.P_tall = 180.4;
One.P_weight = 68.5;
// 멤버함수를 사용하여 출력
One.PrintOfName();
return 0;
}
3. 멤버함수 알아보기
: 멤버함수는 기본적으로 일반함수와 같지만 약간은 다르다. ( 클래스의 멤버이기 떄문에...)
1. 멤버함수를 호출하려면 객체의 이름을 명시해야한다.
2. 멤버함수 안에서는 객체의 이름을 명시하지 않아도 접근이 가능하다.
3. 멤버함수 안에서는 외부에서 접근을 거부한 멤버에도 접근이 가능하다.
( 외부에서는 볼 수 없는 멤버도 안에서는 볼 수 있다는 의미. ---- 접근 제어와 관련 나중에 더! )
멤버함수를 선언하는 방식.
( 2번째 방식이 좀 더 깔끔하다. )
첫번째 방식 class People { public: // 멤버변수 . . . // 멤버함수 void PrintOfName() { cout << "이름 : " << P_name << endl; } }; |
2번째 방식 class People { public: // 멤버변수 . . . // 멤버함수 void PrintOfName(); }; // 클래스명 :: 멤버함수명 void People::PrintOfName(); { cout << "이름 : " << P_name << endl; } |
4. 생성자, 소멸자
생성자와 소멸자는 특별한 멤버 함수라고 생각하시면 됩니다.
생성자 : 객체 생성 시 자동으로 호출되는 함수.
소멸자 : 객체 소멸 시 자동으로 호출되는 함수.
-> 생성자 : 준비 , 소멸자 : 정리
: 동작할 수 있게 준비, 다 사용한 뒤 정리.
생성자는 인자가 있냐 없냐로 구분합니다. ( 디폴트 생성자, 인자가 있는 생성자 )
class People { public: // 멤버변수 . . . // 멤버함수 ... //생서자들 //클래스명과 동일, 반환값이 없다. People(); People(string name, float tall, float weight); }; People::People() { P_name=""; P_tall = 0.0; P_weight = 0.0; } People::People (string name, float tall, float weight) { P_name=name; P_tall = tall; P_weight = weight; } |
int main() { // 객체 생성 People One; // 객체 초기화하기(직접) One.P_name = "한놈"; One.P_tall = 180.4; One.P_weight = 68.5; // 객체 초기화하기(자동 - 디폴트 생성자). People Two; // 객체 초기화하기(인자가 있는 생성자) People Three("세번째",160.5,55.4); return 0; } 각 각 출력을 하면 One은 직접 입력한데로 Two는 디폴트 생성자가 모두 0으로 초기화 했으므로 0 Three는 집어넣은 인자로 출력됩니다. |
생성자를 사용해 초기화하거나 생성하면서 바로 집어넣는 방법도 사용 가능합니다.
그렇다면 위와 같이 사용하지 않을 때는 생성자가 필요없다?
보통 그렇지만, 꼭 생성자가 필요한 경우가 존재합니다.
const 속성을 가진 변수와 레퍼런스 변수를 가지고 있을 경우.
( 이 경우 반드시 변수들이 초기화가 되어있어야 하기 때문에 반드시 생성자로 생성시 자동으로 초기화를 해주어야 합니다. )
소멸자는 생성자의 이름 앞에 ~를 붙인 형태.
오직 하나만 존재 가능.
별거 없는 클래스.
'제2외국어 > Windows' 카테고리의 다른 글
[C#]html, 정규식을 이용한 파싱( using Regex ) (4) | 2013.07.24 |
---|---|
[C#] 간단한 매크로. (0) | 2012.08.08 |
[C#] WebBrower 기초. (간단한 웹브라우저 만들기) (0) | 2012.03.02 |
[C++] 스마트 포인터. (0) | 2011.12.27 |