C++ 언어는 구조적 언어인 C 언어를 객체 지향 언어로 확장한 프로그래밍 언어이다. 기존의 C 언어의 특성을 그대로 이어받으면서 객체 지향에 맞도록 클래스 및 객체라는 개념을 추가한 것이 가장 큰 특징이다. 이번 포스팅에서 C++에서 사용되는 클래스의 정의 및 객체의 사용 방법을 간단히 알아보고자 한다.
클래스의 정의
클래스의 정의는 아래와 같다.
class 클래스 이름
{
private: 데이터 (변수) 및 메소드 (함수) 정의
public: 데이터 (변수) 및 메소드 (함수) 정의
protected: 데이터 (변수) 및 메소드 (함수) 정의
};
여기서 private, public, protected는 접근 권한을 정하는 것이다. public으로 선언된 멤버인 데이터 및 함수는 객체 외부에서도 직접 접근할 수 있다. 하지만 private으로 선언된 멤버들은 반드시 public으로 선언된 멤버 함수를 이용하여 간접적으로 사용되어야 한다. POINT라는 이름으로 클래스를 정의하는 예는 아래와 같다.
class POINT {// 클래스 이름을 POINT로 정의
private:
int x, y; //private 멤버 변수
public:
void SetPoint(int a, int b) {
x = a;
y = b;
printf("x=%d, y=%d \n", x, y);
}
}; // 클래스 정의 완료
클래스를 정의했으면 객체를 만들 수 있다. 정의한 클래스를 이용하여 객체를 생성하는 방법은 아래와 같다.
POINT object1, object2, object3;
위와 같이 POINT 클래스를 기반으로 하는 3개의 객체 object1, object2, object3를 생성할 수 있다. 각 객체는 정수형 멤버 변수 x, y와 한 개의 멤버 함수 SetPoint()를 갖게 된다.
객체가 생성되면 클래스의 멤버들을 사용할 수 있다. 멤버들을 이용하기 위해서는 멤버 연산자(.)와 간접 연산자(->)를 사용한다.
객체내의 멤버 함수를 호출하는 것을 메시지를 보낸다고 표한한다. 하나의 프로그램이 동작하기 위해서는 여러 개의 객체와 객체 사이에서 메시지 전달이 이루어져야 한다. 아래와 같이 메시지 전달이 이루어진다.
object1.SetPoint(0, 0)
또한 멤버에 간접적으로 접근하는 방법은 객체 포인터를 이용하여 아래와 같이 사용할 수 있다.
POINT object1, object2, object3; // 객체 생성
POINT *pob; //객체 포인터 선언
pob = &object1; // 객체의 주소를 포인터에 저장
pob->SetPoint(0,0); // 포인터를 이용한 멤버 접근
예제
#include <iostream>
class POINT {// 클래스 이름을 POINT로 정의
private:
int x, y; //private 멤버 변수
public:
void SetPoint(int a, int b) {
x = a;
y = b;
printf("x=%d, y=%d \n", x, y);
}
}; // 클래스 정의 완료
int main(void)
{
POINT object1, object2, object3; // 객체 생성
POINT* pob; //객체 포인터 선언
pob = &object1; // 객체의 주소를 포인터에 저장
pob->SetPoint(0, 0); // 포인터를 이용한 멤버 접근
return 0;
}
실행 결과
x=0, y=0
참고
1. 홍원기, Visual C++를 활용한 Windows Programming, 북스홀릭퍼블리싱, 2019.02.28
'C++ 기초 2' 카테고리의 다른 글
C++ friend 함수 (0) | 2024.01.30 |
---|---|
C++ this 포인터 (0) | 2024.01.29 |
C++ 동적 메모리 할당 및 제거 (new, delete) (0) | 2024.01.25 |
C++ 객체 포인터와 객체 배열 (0) | 2024.01.23 |
C++ 생성자와 소멸자 (0) | 2024.01.22 |