일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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++] 47. 클래스에 연산자 중복 정의 본문
이번에는 클래스 내부에 멤버 메서드로 연산자를 중복 정의하는 방법을 알아봅시다.
클래스 내부에 멤버 메서드로 연산자를 중복 정의할 때도 메서드의 이름은 operator 키워드에 연산 기호로 나타냅니다. 대신 피연산자 중에서 좌항에 오는 자기 자신은 입력 매개 변수 리스트에 열거하지 않습니다. 주의할 점은 사용하는 곳에서 피연산자의 좌항에 클래스 형식이 올 때만 동작한다는 것입니다. 교환 법칙이 성립할 때는 우항에 클래스 형식이 올 때 수행할 수 있게 전역 연산자 중복 정의도 같이 하시기 바랍니다.
다음은 전역 연산자 중복 정의에서 다루었던 학생 클래스에 == 연산자 중복 정의했던 코드를 클래스 내부에 메서드로 연산자 중복 정의하는 코드입니다.
//Student.h
#pragma once
#include <iostream>
#include <string>
using namespace std;
class Student
{
string name;
const int num;
public:
Student(int num,string name);
bool IsEqual(int num)const;
void View()const;
bool operator==(int num)const;
};
bool operator == (int num, const Student &stu);
//Student.cpp
#include "Student.h"
Student::Student(int num,string name):num(num)
{
this->name = name;
}
bool Student::IsEqual(int num)const
{
return this->num == num;
}
void Student::View()const
{
cout<<"번호:"<<num<<" 이름:"<<name<<endl;
}
bool Student::operator == (int num)const
{
return IsEqual(num);
}
bool operator == (int num, const Student &stu)
{
return stu.IsEqual(num);
}
//Program.cpp
#include "Student.h"
int main()
{
Student stu(3,"홍길동");
int num;
cout<<"번호:";
cin>>num;
if(stu == num) //멤버 메서드 operator == 를 호출
{
cout<<"학생 번호는 "<<num<<"입니다."<<endl;
}
else
{
cout<<"학생 번호는 "<<num<<"이 아닙니다."<<endl;
}
if(num == stu) //전역에 정의한 operator == 호출
{
cout<<"학생 번호는 "<<num<<"입니다."<<endl;
}
else
{
cout<<"학생 번호는 "<<num<<"이 아닙니다."<<endl;
}
stu.View();
return 0;
}
'C & C++ > 디딤돌 C++' 카테고리의 다른 글
[C++] 51. 묵시적 형 변환 연산자 중복 정의 (0) | 2024.04.09 |
---|---|
[C++] 50. 인덱스 연산자 중복 정의 (0) | 2024.04.09 |
[ C++] 49. 대입 연산자 중복 정의 (0) | 2024.04.09 |
[C++] 48. 증감 연산자 중복 정의 (0) | 2024.04.09 |
[C++] 46. 전역 연산자 중복 정의 (0) | 2024.04.09 |
[ C++] 45. 연산자 중복 정의 개요 (0) | 2024.04.09 |
[ C++] 44. 상속과 다형성 최종 실습 – 코드 (0) | 2024.04.08 |
[C++] 43. 상속과 다형성 최종 실습 – 파생 클래스 (0) | 2024.04.08 |