일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |