[C++ 소스] 성적 클래스 (증감 연산자 중복 정의)
//Score.h
#pragma once
#include <iostream>
using namespace std;
class Score
{
int value;
public:
static const int max_score;
static const int min_score;
static const int not_score;
Score(int value);
int GetValue()const; //값 접근자
void Increment();//값 1 증가
void Decrement();//값 1 감소
Score &operator++(); //전위 ++ 연산자 중복 정의
const Score operator++(int); //후위 ++ 연산자 중복 정의
Score &operator--(); //전위 -- 연산자 중복 정의
const Score operator--(int); //후위 -- 연산자 중복 정의
private:
void SetValue(int value);//값 설정자
};
//Score.cpp
#include "Score.h"
const int Score::max_score=100;
const int Score::min_score=0;
const int Score::not_score=-1;
Score::Score(int value)
{
SetValue(value);
}
int Score::GetValue()const
{
return value;
}
void Score::Increment()
{
if(value<max_score)
{
value++;
}
}
void Score::Decrement()
{
if(value>min_score)
{
value--;
}
}
Score &Score::operator++() //전위 ++ 연산자 중복 정의
{
Increment();
return (*this);
}
const Score Score::operator++(int) //후위 ++ 연산자 중복 정의
{
Score score(*this);
Increment();
return score;
}
Score &Score::operator--() //전위 -- 연산자 중복 정의
{
Decrement();
return (*this);
}
const Score Score::operator--(int) //후위 -- 연산자 중복 정의
{
Score score(*this);
Decrement();
return score;
}
void Score::SetValue(int value)
{
if((value<min_score)||(value>max_score))
{
value = not_score;
}
this->value = value;
}
//Program.cpp
//증감 연산자 중복 정의
#include "Score.h"
int main()
{
Score score(20);
cout<<"score "<<score.GetValue()<<" 후위 ++"<<endl;
Score re = score++;
cout<<"score: "<<score.GetValue()<<" 연산 결과:"<<re.GetValue()<<endl;
cout<<"score "<<score.GetValue()<<" 전위 ++"<<endl;
re = ++score;
cout<<"score: "<<score.GetValue()<<" 연산 결과:"<<re.GetValue()<<endl;
return 0;
}
본문
'C++ > 디딤돌 C++' 카테고리의 다른 글
[C++ 소스] 동적 배열 클래스 (인덱스 연산자 중복 정의) (0) | 2016.12.15 |
---|---|
[C++ 소스] 동적 배열 클래스 (대입 연산자 중복 정의) (0) | 2016.12.15 |
[C++ 소스] 학생 클래스 (== 연산자 중복정의, 클래스 내부에 정의) (0) | 2016.12.14 |
[C++ 소스] 학생 클래스 (== 연산자 중복정의, 교환법칙 적용) (0) | 2016.12.14 |
[C++ 소스] 학생 클래스 (== 연산자 중복정의) (0) | 2016.12.14 |