[C++] 접근제어 지시자

marceline·2023년 1월 9일
0

[C++]

목록 보기
6/7

접근제어 지시자 (접근제어 레이블)

  • public : 어디서든
  • protected : 상속관계에 놓여있을때, 유도 클래스에서의 접근허용
  • private : 클래스 내 (클래스 내에서 정의된 함수) 에서만 접근 허용
# include <iostream>
# include <cstring>
using namespace std;

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 fuelGauge;
    int curSpeed;
public :
    void InitMembers(char *ID, int fuel);
    void ShowCarState();
    void Accel();
    void Break();
};
void Car::InitMembers(char *ID, int fuel){
    strcpy(gamerID,ID);
    fuelGauge=fuel;
    curSpeed=0;
}
void Car::ShowCarState(){
    cout<<"소유자 ID : "<<gamerID<<endl;
    cout<<"연료량 : "<<fuelGauge<<endl;
    cout<<"현재 속도 : "<<curSpeed<<endl;
}

void Car::Accel(){
    if (fuelGauge<=0)
        return ;
    else
        fuelGauge-=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;
}

void Car::Break(){
    if (curSpeed<CAR_CONST::BRK_STEP){
        curSpeed=0;
        return ;
    }
    curSpeed-=CAR_CONST::BRK_STEP;
}

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

    return 0;
}

0개의 댓글