C++ 문법(5) 클래스

2 분 소요

Introduction

클래스의 멤버 변수를 프로퍼티(property), 멤버 함수를 메소드(method)라고도 한다. 멤버변수는 독립된 메모리공간에 저장되나, 멤버 함수는 모든 인스턴스가 공유한다.

class 선언과 인스턴스 생성

클래스는 추상화를 사용자 정의 타입으로 구현한 것이라고 할 수 있다. class는 아래와 같이 선언할 수 있다.

class 클래스이름
{
접근제어지시자1:
  멤버변수의_타입 멤버변수의_이름;
  ...
  멤버함수의_원형
  ...
접근제어지시자2:
  ...
};

선언된 class를 이용해 인스턴스를 만들 수 있다.

스택에 할당

Person 클래스의 인스턴스인 person은 스택영역에 올라간다.

클래스이름 인스턴스이름;
// 예시
Person person;

동적 할당

이 경우에 person은 힙 영역에 올라가게 되며, delete하기 전까지 메모리에서 해제되지 않는다.

person = new Person();

멤버 함수의 선언과 호출

일반 함수의 선언과 비슷하다. 다만, 클래스의 선언 안이나 밖에서 모두 정의할 수 있다.

클래스의 선언 밖에서 정의 시에는 범위 지정 연산자(::)를 사용한다.

반환타입 클래스이름::멤버함수이름(매개변수리스트) { 함수내용; }
// 예시
void Person::greeting(string name){
{
    cout << "hello, " << name << endl; 
}

호출은 구조체처럼 사용할 수 있다.

객체이름.멤버함수이름(매개변수리스트);
// 예시
Person kimHJ;
kimHJ.greeting("leeMH");

접근 제어

C++에서는 세 가지 접근 제어 지시자를 제공한다.

  1. public
  2. private
  3. protected

클래스의 기본 접근 제어 권한은 private며, 구조체 및 공용체는 public이다.

public

선언된 클래스 멤버는 제한없이 외부로 공개되며, 해당 객체를 사용하는 프로그램 어디서든 접근이 가능하다. public 멤버 함수는 해당 객체의 private 멤버와 프로그램 사이의 인터페이스 역할을 할 수 있다.

class Book
{
public:
 string title;
 int total_page:
 ...
}

private

선언된 클래스 멤버가 외부로 공개되지 않으며, 접근이 불가하다.

protected

외부에서는 private 멤버처럼 취급되나, 상속받은 자식 클래스는 접근이 가능하다.

Reference

TCP School 강의문서

태그: ,

카테고리:

업데이트: