하루하루

[C++] 클래스와 객체 본문

IT/c++

[C++] 클래스와 객체

Jo.o 2019. 10. 7. 22:00
반응형

클래스는 객체 지향 프로그래밍을 지원하는 C++의 핵심 기능이다.
클래스는 객체의 형태를 지정하는 데 사용되며, 데이터 표현과 해당 데이터를 조작하기 위한 메소드를 하나로 결합한다.


클래스

- 클래스 이름은 대문자로 시작해야한다. (필수 x) 클래스 이름이 둘 이상의 단어로 구성된 경우 각 단어의 첫 글자는 대문자여야 한다.

- 클래스에는 데이터 멤버 및 멤버 함수가 포함되며, 이러한 데이터 멤버 및 변수의 액세스 방법은 액세스 지정자에 따라 다르다.

- 클래스의 멤버 함수는 클래스 정의 내부 또는 클래스 정의 외부에서 정의할 수 있다.

- 클래스의 객체는 별도의 데이터 멤버 사본을 보유한다. 필요한 만큼 클래스의 객체를 만들 수 있다.

C++ 클래스 정의

클래스는 객체를 만들기 위한 설계도이다. 클래스를 정의할 땐 공간이 할당되지 않는다. 실제로 데이터를 정의하진 않지만 클래스 이름의 의미, 즉 클래스의 객체를 구성할 요소와, 객체에 대해 수행할 수 있는 작업을 정의한다.

C++에선 이와 같이 클래스를 이용해 만들어진 객체를 인스턴스(instance)라고 부른다.

 

클래스의 정의는 키워드 class와 클래스 이름으로 시작한다. 클래스 정의 뒤에는 세미콜론 또는 선언 목록이 와야 한다. 예를 들어 Box 데이터 유형을 다음과 같이 정의했다.

class 이름
{
접근 제한자:
	멤버 변수;
    반환형 멤버 함수();
    ...
};

반환형 클래스 명 :: 멤버 함수()
{
	...
}
class Car {
public:
    int model;
    int speed;
    void showModel();
    int getSpeed();
    int Accel();
    int Break();
};

public 키워드는 접근 제한자이다. C++의 접근 제한자는 총 3가지이다.

  • public : 어디서든 접근 허용
  • private : 클래스 내 (클래스 내에 정의된 함수)에서만 접근 허용
  • protected : 상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용

자세한 내용은 다음에 알아보겠다.

C++ 객체 정의

클래스는 객체에 대한 설계도를 제공하므로 기본적으로 객체는 클래스를 통해 생성된다. 기본 유형의 변수를 선언하는 것과 마찬가지의 선언으로 클래스의 객체를 선언할 수 있다.

 

위에서 만든 클래스로 새로운 차를 만들어보자.

Car bmw;
car.model = 520
car.showModel();

객체 내부에 접근하기 위해 . 을 사용하였다.

 

#include <iostream>

class Car
{
public:
    int model;
    int speed;
    void showModel();
    int getSpeed();
    int Accel();
    int Break();
};

void Car::showModel()
{
    
}

int Car::getSpeed()
{
    
}

int Car::Accel()
{
    
}

int Car::Break()
{
    
}

int main()
{
    Car bmw;
    bmw.model = 520;
    bmw.showModel();

    return 0;
}

다음과 같이 사용할 수 있다.

반응형