C++ 클래스 만들기
1. 클래스 만들기
C++에서는 class 키워드를 이용하여 클래스를 선언한다. C++ 클래스는 C 언어의 구조체와 같이 개발자가 정의하는 새로운 데이터 타입이다. C++ 클래스 내에는 멤버 변수와 멤버 함수가 선언될 수 있다. 아래의 예와 같이 클래스의 내용에 대해서 선언하는 부분을 클래스 선언부라고 부른다.
i.e.
class Circle {
public:
int radius; //멤버 변수
double getArea(); //멤버 함수
};
클래스 선언부는 class 키워드로 클래스를 선언하며 시작한다. 자바와는 달리 각 멤버에 대한 접근 지정자를 한꺼번에 지정한다. 또한, 클래스 선언부는 블록이 끝난 후에 반드시 세미콜론으로 끝난다.
클래스를 선언하였으니 이제 구현을 할 차례이다. 선언부 이후에는 클래스 구현부가 와야 한다. 클래스 구현부란, 클래스의 멤버 함수를 구현해 놓은 부위라는 뜻이다.
i.e.
double Circle::getArea() {
return 3.14 * radius*radius;
}
2. 클래스 선언부
클래스는 class 키워드와 클래스 이름으로 선언한다.
i.e.
class Circle { //클래스 이름과 함께 클래스를 선언
...
}; //반드시 세미콜론으로 종료
클래스 이름은 개발자가 원하는 대로 붙이면 된다. 클래스 선언은 클래스의 모양을 정의하는 것으로서, 멤버 변수와 멤버 함수의 원형을 선언하다. 이들은 {와 }로 감싸며 마지막에 반드시 세미콜론(;)을 붙여야 한다.
- 클래스 멤버
클래스의 멤버는 변수와 함수로 구성된다. 멤버 변수는 클래스 선언부에서 초기화 될 수 없다. 다음의 경우 컴파일 오류가 발생한다.
class Circle {
public:
int radius = 5; //컴파일 오류. 멤버 변수는 클래스 선언부에서 초기화 될 수 없다.
...
}
멤버 함수는 원형 형태로 선언되며, 리턴 타입, 매개 변수 리스트 등이 모두 선언되어야 한다.
double getArea();
- 접근 지정자, public
클래스의 일부 멤버들을 다른 클래스와의 통신을 위해 외부에 공개하기도 한다. 멤버를 외부에 공개하려면, 다음과 같이 public 접근 지정자(access specifier)로 선언한다.
class Circle {
public: //이하의 모든 멤버는 다른 접근 지정자가 선언될 때까지 public 접근 지정
...
};
접근 지정자가 선언되면, 다른 접근 지정자로 선언될 때까지 모든 멤버에 대해 적용된다. 접근 지정자는 public 외의 private, protected 등 총 3가지 종류가 있다. 그 중 public 접근 지정은 클래스 외부로부터의 접근을 허용한다는 뜻이다.
3. 클래스 구현부
클래스 구현부에서는 클래스 선언부에 선언된 멤버 함수의 코드를 구현한다.
i.e.
double Circle :: getArea() {
return 3.14 * radius * radius;
}
2개의 콜론으로 만들어진 범위 지정 연산자(::)를 사용하여 클래스 이름과 함께 멤버 함수를 기술한다. 이것은 같은 이름의 함수가 다른 클래스에 존재할 수 있기 때문이다.
참고로, 클래스를 클래스 선언과 클래스 구현으로 분리하여 작성하는 이유는 클래스의 재사용을 위해서이다. 클래스를 사용하고자 하는 다른 C++ 파일에서는 컴파일 시 클래스의 선언부만 필요하기 때문이다.
'C++ > C++ 기본' 카테고리의 다른 글
생성자 (0) | 2018.07.04 |
---|---|
객체 생성과 객체 활용 (0) | 2018.07.02 |
C++ 클래스와 객체 (0) | 2018.07.02 |
C++에서의 문자열 (0) | 2018.07.01 |
키 입력 받기 (0) | 2018.07.01 |