이번에는 클래스에 대해 알아봅시다.
C++에서 클래스(class)란 객체를 정의하는 틀 또는 설계도로써 사용됩니다.
위의 사진처럼 메서드들과 변수들을 담는 객체를 정의하는 역할이 바로 클래스입니다.
클래스는 객체의 설계도로써 클래스로 만들어진 객체는 인스턴스(instance)라고 부릅니다.
따라서 객체의 변수나 메서드 또한 인스턴스 변수, 인스턴스 메서드라고 부르는 것입니다.
클래스 예시
class MyClass {
private:
int One;
int Two;
public:
void set_One(int _One) {
One = _One;
}
void set_Two(int _Two) {
Two = _Two;
}
};
int main() {
MyClass myClass;
}
위의 코드에서 클래스 MyClass로 임의의 객체의 설계도를 만들었습니다.
그리고 이 MyClass라는 설계도를 바탕으로 main()함수에서 myClass라는 인스턴스 객체로 생성하였습니다.
인스턴스 변수(instance variable)
우리가 main()하수에서 myClass라고 인스턴스 객체로 생성하였을 때,
생성된 객체 내에 있는 One, Two는 인스턴스 변수로 불리게 됩니다.
인스턴스 함수(instance function)
또한 main()하수에서 myClass라고 인스턴스 객체로 생성하였을 때,
생성된 객체 내에 있는 set_One, set_Two는 인스턴스 함수로 불리게 됩니다.
멤버 변수(member variable)
객체 생성과 별개로 코드 상으로 클래스에 있는 변수를 구분 지을 때는 멤버 변수로 부릅니다.
즉, One, Two 두 개의 int형 변수를 코드에서 멤버 변수(member variable)라고 부릅니다.
멤버 함수(member function)
또한 객체 생성과 별개로 코드 상으로 클래스에 있는 함수를 구분 지을 때는 멤버 함수로 부릅니다.
즉, set_One, set_Two 두 개의 함수를 멤버 함수(member function)라고 부릅니다.
즉, 인스턴스로 생성된 객체 내의 함수와 변수는 인스턴스 함수, 인스턴스 변수로 부르고
클래스 내의 함수와 변수는 멤버 함수와 멤버 변수로 부릅니다.
멤버 함수, 멤버 변수도 인스턴스가 만들어져야 실재하기 때문에 구분해야합니다.
private vs public 키워드
위의 코드에서 멤버 변수나 멤버 함수 위에 각각 private와 public 키워드가 있습니다.
이것들을 '접근 지시자'라고 부릅니다.
이름처럼 외부에서 멤버들에게 접근이 가능한지 아닌지를 결정하는 것입니다.
위의 상황에서 private: 키워드 밑에 있는 one, two int형 변수들은 객체 내부에서 자기들만 접근가능하고,
외부에서 접근이 불가능합니다.
반대로 public: 키워드의 경우 마음대로 외부에서 set_One, set_Two 함수를 호출하여 객체의 내부 private: 부분의 변수의 값을 객체 스스로가 값을 변경하도록할 수 있습니다.