일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 실습으로 다지는 c#
- 동영상 강의
- c언어
- Windows Forms
- 소스 코드
- 강의
- 졸업 작품
- 무료 동영상 강의
- 소켓 통신
- 표준 입출력
- 충남 천안
- 추천
- 안드로이드 앱 개발
- 원격 제어 프로그램
- 표준 라이브러리 함수
- 졸업 작품 소재
- 캡슐화
- c#
- 네트워크 프로그래밍
- 실습
- 파이썬
- 동영상
- 클래스 다이어그램
- 언제나 휴일
- 알고리즘
- 산책하기 좋은 곳
- 언제나휴일
- 유튜브 동영상 강의
- 프로젝트
- C++
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[C++] 51. 묵시적 형 변환 연산자 중복 정의 본문
이번에는 묵시적 형변환 연산자 중복 정의를 알아봅시다.
C++언어에서 int 형식과 char 형식은 상호 묵시적 형 변환이 가능합니다. 이는 int 형식 변수에 char 형식을 대입하면 컴파일 내부에서 char 형식의 값을 int 형식의 값으로 묵시적 형 변환하여 대입하기 때문입니다.
int a = 3;
char c = 'a';
c = a; //묵시적 형변환에 의해 a를 char 형식의 값으로 변환 후 대입
a = c; //묵시적 형변환에 의해 c를 int 형식의 값으로 변환 후 대입
C++언어에서는 개발자가 묵시적 형 변환 연산자를 중복 정의할 수 있습니다. 묵시적 형 변환 연산자를 중복 정의할 때는 operator 키워드 뒤에 형 변환할 형식 이름을 사용합니다. 그리고 리턴 형식은 개발자가 명시할 수 없습니다.
예를 들어 Score 클래스에 int 형식으로 묵시적 형 변환 연산자를 중복 정의하면 int 형식이 와야 하는 곳에 Score 형식을 사용할 수 있습니다. 이를 통해 ==, =>, >, <, <=, != 등의 다양한 연산자를 중복 정의해야 하는 것을 해결할 수 있습니다.
//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);
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);
}
Score::operator int()
{
return value;
}
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);
int num=0;
cout<<"정수 :";
cin>>num;
if(num>score)
{
cout<<num<<"이 "<<score<<"보다 크다."<<endl;
}
else if(num == score)
{
cout<<num<<"과 "<<score<<"는 같다."<<endl;
}
else
{
cout<<num<<"이 "<<score<<"보다 작다."<<endl;
}
int value = score;
cout<<"값:"<<value<<endl;
return 0;
}
'C & C++ > 디딤돌 C++' 카테고리의 다른 글
[C++] 57. 예외 처리 (0) | 2024.04.11 |
---|---|
[C++] 54. 개체 출력자 (0) | 2024.04.10 |
[C++] 53. iostream 흉내내기 (0) | 2024.04.10 |
[C++] 52. 함수 개체 (0) | 2024.04.09 |
[C++] 50. 인덱스 연산자 중복 정의 (0) | 2024.04.09 |
[ C++] 49. 대입 연산자 중복 정의 (0) | 2024.04.09 |
[C++] 48. 증감 연산자 중복 정의 (0) | 2024.04.09 |
[C++] 47. 클래스에 연산자 중복 정의 (0) | 2024.04.09 |