클래스(class)
- 관련 있는 데이터를 하나로 묶어 관리 및 사용을 편하게 하는 것
- 하나로 묶은 데이터들은 하나의 자료형 처럼 사용할 수 있음
- 구조체와 클래스의 다른 점 중 하나는 함수를 묶을 수 있다는 것
- 클래스는 멤버 변수와 멤버 함수를 하나로 묶은 것을 말한다.
class group{
public:
char a[10];
char b[20];
int cnt;
int add(int x, int y) {
return x + y;
}
int sub(int x, int y) {
return x - y;
}
};
- 클래스를 이용하여 정의된 자료형은 변수가 아니라 객체라고 한다.
- 객체는 인스턴스 라고도 표현한다.
- 클래스를 기반으로 객체(인스턴스)를 생성하는 것을 인스턴스화 라고 한다.
내부 접근과 외부 접근
- 클래스에서 생성된 변수는 클래스 내에서 접근할 때 내부접근 이라고 한다.
- 클래스 밖에서 클래스 내부에 선언된 객체 접근할 때 외부접근이라고 한다.
class counter {
int cnt;
void sum(void) {
cnt = cnt + cnt; // 내부접근
}
};
int main()
{
.
.
counter a;
a.cnt = 1; // 외부접근
a.sum(); // 외부접근
.
.
}
- 클래스는 public, protected, private 3가지 접근 제어가 가능하다.
- public은 외부 접근이 가능하고 private는 내부 접근만 가능하다.
- 멤버 변수를 외부에서 접근하지 못하도록 하는 것을 은닉화 라고 한다.
- 클래스에 아무 선언이 없을 경우 default로 private 선언 된다.
class counter {
private:
int cnt;
public:
void sum(void) {
cnt = cnt + cnt; // 내부접근
}
};
int main()
{
.
.
counter a;
//a.cnt = 1; // 외부접근 안됨
a.sum(); // 외부접근
.
.
}
멤버함수 클래스 외부에 정의
- 멤버함수를 :: 기호를 사용하여 클래스 외부에 정의할 수 있다.
class counter {
private:
int cnt;
public:
void sum();
};
void counter::sum(void) {
cnt = cnt + cnt; // 내부접근
}
도움이 되셨다면 더 좋은 정보 공유를 위해 광고 클릭 부탁 드립니다 :)
0 댓글