본문 바로가기

C++

[C++] 클래스

클래스란?

클래스도 마찬가지로 여러 변수를 그룹화하는 데이터 유형이다.

이전에 나온 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