클래스란?
클래스도 마찬가지로 여러 변수를 그룹화하는 데이터 유형이다.
이전에 나온 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 |