C++ 정리 3(클래스와 객체(1))
C++ 정리 3(클래스와 객체(1))
c++ 클래스
이번에는 c++의 존재 이유이자 꽃이라고 할 수 있는 클래스에 대해서 정리해 보겠습니다. 클래스는 객체 지향 프로그래밍에 있어서 핵심인 부분으로 반드시 잘 알고 넘어가야 합니다.
클래스는 먼저 멤버 변수와 멤버 함수로 구성 됩니다.
클래스를 한번 만들어 보겠습니다.
class Circle {
public:
int radius;
double getArea();
};
이때 radius를 멤버 변수라고 하고 getArea()를 멤버 함수라고 합니다.
클래스는 class 키워드로 선언하고 반드시 마지막에 ;를 써줍니다. 처음에 ;를 자주 빼먹어서 실수했던 기억이 있습니다.
그러면 public: 은 무엇을 뜻하는 것일까요??
이것은 접근 지정자를 뜻합니다. 접근 지정자에는 3가지 종류가 있습니다.
public: 클래스의 외부로부터의 접근을 허용합니다.
private: 클래스의 외부에서 접근 할 수 없습니다.
protected: 상속받는 자식 클래스에서만 접근할 수 있습니다.
이제 클래스 선언을 했으니 클래스 구현을 해보겠습니다. 클래스의 재사용을 위해 클래스 선언과 클래스 구현을 분리하여 작성합니다.
double Circle :: getArea() {
return 3.14 * radius * radius; }
클래스의 멤버함수인 getArea()를 구현하였습니다.
이때 중요한 것은 Circle:: 을 작성한 것처럼 클래스이름을 작성하여서 범위를 지정해주어야합니다. 이것도 실수가 자주 생기는 부분입니다.
객체(object) 생성
Circle coin;
이렇게 우리가 만든 클래스의 이름인 Circle 을 써주고 coin이라는 이름을 붙여서 우리의 객체를 생성해줍니다.
그러면 이렇게 생성된 객체는 어떻게 활용할 수 있나요?
객체 활용
coin.radius = 1;
double area = coin.getArea();
객체 이름 뒤에 점을 찍어서 우리는 클래스의 멤버변수와 멤버 함수에 접근할 수 있습니다.
생성자
생성자란 객체가 생성될 때 자동으로 실행되는 멤버 함수를 말합니다. 클래스는 생성자를 이용해서 객체를 초기화 합니다. 여기서 초기화는 삭제하는 초기화가 아닌 initialize의 뜻인 초기화 입니다. 저는 공부할때 왜 초기화를 시키지? 생각했는데 단순한 번역 문제 였습니다. 다시 한번 용어를 정리하시는 것을 추천드립니다.
생성자는 다음과 같은 특징이 있습니다.
- 생성자의 목적은 객체가 생성될 때 필요한 초기 작업을 위함이다.
- 생성자 함수는 오직 한 번만 실행된다.
- 생성자 함수의 이름은 클래스 이름과 동일하게 작성되어야 한다.
- 생성자 함수의 원형에 리턴 타입을 선언하지 않는다.
- 생성자는 중복 가능하다.
일단 생성자의 정리는 여기까지 정리하고 다음 시간에 생성자의 실행과 사용방법에 대해서 더욱 자세히 정리 하겠습니다.