클래스와 객체
- 클래스
- 클래스의 구성 요소를 클래스 멤버라고 한다. 이는 .(점 연산자)를 사용해 클래스 멤버에 액세스 할 수 있다.
.length()
object.class_member
- 멤버 데이터라고 하는 attribute는 클래스의 인스턴스에 대한 정보로 구성된다.
- 멤버함수라고 하는 메소드는 클래스의 인스턴스와 함께 사용할 수 있는 함수이다.
일반적으로 (cpp파일과 동일한 이름의 헤더를 만들어 헤더에서 메소드를 선언하고 cpp파일에서 메소드를 정의한다. 클래스 외부에서 메소드를 정의할 때 메소드 앞에 '클래스이름::메소드이름'의 형식을 이용해 클래스를 나타낸다.
예제) 클래스, 객체 사용법
electric_relaxation이라는 객체(인스턴스)를 생성했다.
클래스가 선언된 헤더파일의 모습이다.
함수가 정의된 파일이다.
- public, private
- 클래스 멤버는 public, private로 범위가 제한된다. 이를 통해 데이터가 실수로 쉽게 변경되는 것을 방지할 수 있다.
public을 이용하면 클래스 외부에서도 액세스 할 수 있다.
예제)
#include "song.hpp"
// add Song method definitions here:
void Song::add_title(std::string new_title) {
title = new_title;
}
std::string Song::get_title() {
return title;
}
void Song::add_artist(std::string new_artist) {
artist = new_artist;
}
std::string Song::get_artist() {
return artist;
}
song.hpp
- 생성자
- 클래스와 이름이 같고 반환 형식이 없다.
다음과 같이 정의를 작성할수도 있다. 이를 이용해 각 멤버가 만들어질 때 직접 초기화할 수 있다.
예제)
- 소멸자
- 클래스와 이름이 같고 반환 형식이 없다. 일반적으로 소멸자를 호출할 필요가 없다. 소멸자는 다음 중 하나의 경우에서 자동으로 호출된다.
1) 객체가 범위 밖으로 이동할 때
2) 객체가 명시적으로 삭제될 때
3) 프로그램이 종료될 때