클래스란?
클래스도 마찬가지로 여러 변수를 그룹화하는 데이터 유형이다.
이전에 나온 C++의 구조체는 클래스의 일종이다.
클래스 선언
클래스는 키워드 struct를 대신해 class를 사용하여 선언한다.
class Point {
public:
int xpos;
int ypos;
};
접근제어 지시자가 선언되면, 다음 접근제어 지시자가 나오기 전까지 적용된다.
접근제어 지시자
C++에서는 다음과 같이 세 개의 접근제어 지시자가 있다.
public |
어디서든 접근 허용 |
protected |
상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용 |
private |
클래스 내에서만 접근 허용 |
클래스에서는 접근과 관련해서 별도의 선언을 하지 않으면, 기본적으로 private 선언이 된다.
하지만 구조체에서 별도의 선언을 하지 않으면 기본적으로 public 선언이 된다.
이것이 클래스와 구조체의 유일한 차이점이다.
파일 분할
C++에서는 클래스 별로 헤더파일과 소스파일을 생성해서 클래스의 선언과 정의를 분리하는 경우가 많다.
Point.h : 클래스 선언, 컴파일러가 클래스와 관련된 문장의 오류를 잡아내는데 필요한 최소한의 정보를 포함한다.
class Point
{
private:
int xpos;
int ypos;
public:
void Init(int x, int y);
void MovePosition(int x, int y);
void AddPoint(const Point &pos);
void ShowPosition();
};
Point.cpp : 클래스 정의, 함수의 정의는 컴파일 된 이후에 링커에 의해 하나의 실행파일로 묶인다.
#include "Point.h"
#include <iostream>
void Point::Init(int x, int y) {
xpos = x;
ypos = y;
}
void Point::MovePosition(int x, int y) {
xpos += x;
ypos += y;
}
void Point::AddPoint(const Point &pos) {
xpos += pos.xpos;
ypos += pos.ypos;
}
void Point::ShowPosition() {
std::cout << "Point [" << xpos << ", " << ypos << "]" << std::endl;
}
'C++' 카테고리의 다른 글
| [C++] 정보은닉과 캡슐화 (0) | 2019.03.13 |
|---|---|
| [C++] 객체지향 프로그래밍 (0) | 2019.03.13 |
| [C++] 구조체 (0) | 2019.03.08 |
| [C++] new & delete (0) | 2019.03.08 |
| [C++] 참조자(Reference)와 함수 (0) | 2019.03.05 |