C++ 에서의 파일분할

‍정진철·2022년 9월 3일
0

C++

목록 보기
5/18

참조 : 윤성우의 열혈 C++

c++ 에서의 파일분할

클래스 Car 를 대상으로 파일을 나눠보자.

  • Car.h => 클래스의 선언을 담는다.
  • Car.cpp => 클래스의 정의(멤버함수의 정의)를 담는다.

<클래스의 선언> - 외형적인 틀 (declaration)

namespace CAR_CONST
{
    enum
    {
        ID_LEN = 20,
        MAX_SPD = 200,
        FUEL_STEP = 2,
        ACC_STEP = 10,
        BRK_STEP = 10
    };
}

class Car
{
private:
    char gamerID[CAR_CONST::ID_LEN]; 
    int fuelGage;                    
    int curSpeed;                    
public:

    void InitMembers(char *ID, int fuel);
    void ShowCarState();
    void Accel();
    void Break();
};

<클래스의 정의> - definition

  • 멤버함수의 정의부분을 컴파일 하는데도 '클래스의 선언'(헤더파일) 정보가 필요하다.
#incldue <iostream>
#include <cstring>
#include "Car.h"

using namespace std;

void Car::InitMembers(char *ID, int fuel)
{
    strcpy(gamerID, ID);
    fuelGage = fuel;
    curSpeed = 0;
}

void Car::ShowCarState()
{
    cout << "사용자 ID: " << gamerID << endl;
    cout << "연료량: " << fuelGage << "%" << endl;
    cout << "현재속도: " << curSpeed << "km/s" << endl;
}

void Car::Accel()
{
    if (fuelGage <= 0)
        return;

    else
        fuelGage -= CAR_CONST ::FUEL_STEP;

    if ((curSpeed += CAR_CONST ::ACC_STEP) >= CAR_CONST ::MAX_SPD)
    {
        curSpeed = CAR_CONST ::MAX_SPD;
        return;
    }
    curSpeed += CAR_CONST ::ACC_STEP;
}

main.cpp

  • main함수를 구성하는 문장은 클래스 Car와 관련된 것 뿐.
    따라서 헤더파일만 포함키면됨.
#include "Car.h"


int main(void)
{
    Car run99;
    run99.InitMembers("run99", 100);
    run99.Accel();
    run99.Accel();
    run99.Accel();
    run99.ShowCarState();
    run99.Break();
    run99.ShowCarState();
    return 0;
}

profile
WILL is ALL

0개의 댓글