연산자 중복 정의 5

[C++] 53. iostream 흉내내기

[C++] iostream 흉내내기 이번에는 cin과 cout으로 출력 및 입력할 때 쉬프트 연산을 사용하는 원리를 살펴보기 위해 iostream 클래스를 흉내내 보기로 할게요. 여기에서 설명하는 것은 원리를 살펴보기 위한 것이지 iostream 클래스의 내부를 정확하게 표현하기 위한 것이 아닙니다. 실제 iostream 클래스는 여기에서 설명하는 것보다 훨씬 정교하고 신뢰성있게 정의하고 있어요. C언어에서 printf 함수로 출력하거나 scanf 함수로 입력받을 때는 포멧 사용자를 사용했었죠. 하지만 C++에서 cin과 cout을 사용할 때는 포멧 사용자 없이 쉬프트 연산을 사용했어요. 어떠한 포멧으로 출력 혹은 입력해야 하는지 표현하지 않아도 알아서 입출력해 주었죠. 이러한 것이 가능한 이유는 클래스..

[C++] 52. 함수 개체

[C++] 함수 개체 이번에는 함수 호출 연산자 중복 정의와 함수 개체를 알아보기로 해요. C++언어에서는 함수 호출 연산자를 중복정의 할 수 있습니다. 함수 호출 연산자의 연산 기호는 ( ) 입니다. 따라서 함수 호출 연산자를 중복 정의할 때 메서드 이름은 operator()입니다. 메서드 뒤에 입력 매개 변수 리스트를 열거하는 ()에는 개발자가 개수와 형식을 결정하고 반환 형식도 개발자가 정합니다. [반환형식] operator() ([입력 매개 변수 리스트]); 그리고 함수 호출 연산자를 중복 정의한 형식의 개체를 함수 개체라고 부릅니다. 함수 개체는 형식 내부에 함수 호출 연산자를 중복 정의하고 있어서 마치 함수처럼 호출하여 사용할 수 있습니다. 먼저 간단하게 함수 호출 연산자 중복 정의를 사용하여..

[C++] 47. 클래스에 연산자 중복 정의

[C++] 클래스에 연산자 중복 정의 이번에는 클래스 내부에 멤버 메서드로 연산자를 중복 정의하는 방법을 알아봅시다. 클래스 내부에 멤버 메서드로 연산자를 중복 정의할 때도 메서드의 이름은 operator 키워드에 연산 기호로 나타냅니다. 대신 피연산자 중에서 좌항에 오는 자기 자신은 입력 매개 변수 리스트에 열거하지 않습니다. 주의할 점은 사용하는 곳에서 피연산자의 좌항에 클래스 형식이 올 때만 동작한다는 것입니다. 교환 법칙이 성립할 때는 우항에 클래스 형식이 올 때 수행할 수 있게 전역 연산자 중복 정의도 같이 하시기 바랍니다. 다음은 전역 연산자 중복 정의에서 다루었던 학생 클래스에 == 연산자 중복 정의했던 코드를 클래스 내부에 메서드로 연산자 중복 정의하는 코드입니다. //Student.h #..

[C++] 46. 전역 연산자 중복 정의

[C++] 전역 연산자 중복 정의 개발자는 전역이나 클래스 내에서 연산자 중복 정의할 수 있습니다. 먼저 전역에서 연산자 중복 정의 방법을 알아봅시다. 연산자 중복 정의할 때는 메서드 이름 대신 operator 키워드 뒤에 정의할 연산 기호를 명시합니다. 그리고 피연산자는 순서대로 입력 매개 변수 리스트에 열거하고 연산 결과는 리턴 형식으로 표현합니다. [리턴 형식] operator [연산기호] (입력 매개 변수 리스트) { [기능 구현] } 간단하게 학생 클래스를 정의한 후에 == 연산자를 전역에 중복 정의해 볼게요. 다음과 같은 학생 클래스가 있다고 가정해요. //Student.h #pragma once #include #include using namespace std; class Student {..

[ C++] 45. 연산자 중복 정의 개요

이번에는 연산자 중복 정의에 관해 알아보기로 해요. 연산자 중복 정의란 하나 이상의 피연산자가 사용자 정의 형식일 때 연산 기능을 정의하는 것입니다. C++에서는 개발자는 자신이 정의한 형식을 피연산자로 사용할 때 사용하는 곳에서 연산 기호를 사용할 수 있게 연산 기능을 정의할 수 있습니다. 자신이 정의한 형식에 특정 연산의 기능을 정의하면 사용하는 개발자는 직관적으로 사용할 수 있습니다. 예를 들어 IsEqual 메서드를 제공하고 있을 때 == 연산자 중복 정의를 제공하여 사용하는 개발자는 == 연산을 사용할 수 있게 만드는 것입니다. 다음은 C++언어에서 연산자 중복 정의에 관한 사항들입니다. – 피연산자 중에 최소 하나는 사용자 정의 형식이어야 한다. – 기본적으로 함수 중복 정의의 규칙을 따른다...