inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C++

9.3 단항 연산자 오버로딩 하기

단항 연산자 오버로딩 방법에 대해 질문있습니다.

해결된 질문

288

durams

작성한 질문수 8

2

9.1 산술 연산자 오버로딩하기 강의에서는 연산자 오버로딩을 멤버 함수, friend 함수, 전역 함수로 구현하는 방법을 각각 알아봤었습니다. 그런데 이번 강의의 단항 연산자 오버로딩은 멤버함수로만 구현하고 전역 함수로 구현하는 내용이 없어 스스로 시도해보았습니다.

https://learn.microsoft.com/en-us/cpp/cpp/overloading-unary-operators?view=msvc-170

위 링크의 아래 내용을 참고하여 작성해 보았습니다.

To declare a unary operator function as a nonmember function, use this declaration form:

return-type operator op ( class-type );

 

class Cents {
private:
	int m_cents;

public:
	Cents(int cents) {
		m_cents = cents;
	}

	int getCents() const {
		return m_cents;
	}

	int& getCents() {
		return m_cents;
	}

	friend std::ostream& operator << (std::ostream& out, const Cents& cents) {
		out << cents.m_cents;
		return out;
	}
};

// 비멤버 함수로 오버로딩
Cents operator -(const Cents& cents) {
	return Cents(-cents.getCents());
}

int main() {
	Cents cents1(6);

	cout << cents1 << endl;
	cout << -cents1 << endl;
	// 6
	// -6

	return 0;
}

테스트는 잘 되더라구요. 이렇게 하는 것이 맞나요?

 

c++

답변 1

2

Soobak

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

네, 잘 구현하셨습니다.

특히, 객체 지향의 은닉성을 잘 유지하는 부분, C++ 연산자 오버로딩의 기본 원칙 등을 잘 이해하고 계신 것 같습니다.

👍

1

durams

감사합니다. 클래스 내에서 friend 함수로도 구현이 되긴 하는데, unary는 멤버로 하는게 매개변수가 없어서 훨씬 깔끔하네요.

강의자료는 어디서 받을 수 있죠?

1

20

2

교재 있나요?

1

138

2

11:11 부근에 Something::temp와 Something::getValue의 앞에 &를 붙이는 이유가 뭔가요? (함수 이름은 포인터(주소)가 아닌가요?)

1

91

3

using namespace std; 선언 후에 std::를 하는 이유가 궁금합니다

1

102

2

cstr직접구현

0

116

3

BubbleSort

1

78

2

숙제 마지막 부분

1

79

2

강의와 똑같이 진행했는데 링킹 에러가 발생합니다.

1

95

2

수업할때 레퍼런스로 사용하는 도서는 어떤 도서인가요??

1

164

2

공변반환형 관련 문의 드립니다.

1

90

2

170강 유니크 포인터에대해 질문있습니다

1

81

1

섹션 5 퀴즈의 답이 이상합니다

1

84

2

이중포인터와 배열이 이해가 안됩니다.

1

159

2

5분 17~5분 34초 객체 잘림 질문

1

79

1

Resource.h 코드 알려주세요

1

72

1

char name[] 배열의 길이와 관련해 일부 궁금점이 생겨서 질문합니다

1

94

2

화면좌측 숫자 보이기

1

115

1

화면 좌측 숫자 보이기

0

67

1

처음 c++ 수강하려는데요. 비주얼스튜디오 2022 다운로드해서 설치하면 되는건가요??

1

138

3

46강 string 버퍼 질문입니다

1

81

2

프로그래머스 수열과 구간 쿼리 2 문제 질문입니다.

1

124

2

[] 범위 검사시 assert 사용 관련 질문

1

90

2

Lecture 클래스 멤버변수 명명 관련

0

92

2

프로그래머스의 대소문자 바꿔서 출력하기 문제를 푸는데요

0

74

1