inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문

프렌드

opreator*

74

최정욱

작성한 질문수 1

0

프렌드 강의 2분 50초경을 보면

기존 opreator 방식으로는 구현하기 어렵다고 되어있는데,

 

Time Time::operator*(int n){
    Time sum;
    sum.mins = mins*n;
    sum.hours = hours*n;
    sum.hours += sum.mins/60;
    sum.mins %= 60;
    return sum;
}

이렇게 구현하면 작동은 정상적으로 되는데

안되는 이유가 있을까요?

c++

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 최정욱님.

귀하의 질문은 operator*를 구현할 때 항상 프렌드 함수를 사용해야 하는지, 또는 멤버 함수로 구현해도 되는지에 대한 것으로 보입니다.

프렌드 함수를 사용하지 않고도 operator* 연산자를 멤버 함수로 구현하는 것이 가능합니다. 다만 프렌드 함수를 사용할 때의 장점은 좌변과 우변의 타입이 다를 때, 즉 다른 타입과의 연산을 고려하여 사용할 수 있다는 점입니다. 멤버 함수로 구현할 경우, 좌측의 객체가 해당 클래스의 인스턴스여야만 합니다. 작성하신 Time::operator* 함수는 Time 객체가 좌변에 있을 때 유효하게 작동하며, 이 경우에는 멤버 함수로 구현해도 문제가 없습니다.

아래 게시물을 통해 더 많은 정보를 확인하실 수 있습니다:
- sum 함수 오버로드 질문
템플릿을 사용한 함수 오버로딩에서 발생할 수 있는 문제점과 이를 해결하는 방법에 대한 설명이 담겨 있습니다.

프렌드 함수와 멤버 함수 모두 사용할 수 있지만, 각 방식의 장단점을 이해하고 상황에 맞게 선택하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

switch 구문과 break continue 구문 강의 질문드립니다

0

54

1

cin은 c언어에서의 scanf와 동일하다고 봐도 될까요?

0

139

0

질문이 있습니다.

0

107

1

temp1 선언

0

90

1

const MyStruct& 사용

0

112

0

인트형 포인터의 사이즈가 8이 나옵니다.

0

216

1

MyStruct* temp = new MyStruct; 에서 temp도 delete를 해야하나요?

0

126

1

#include <iostream> 중복

0

153

1

int sum=sumArr(arr. SIZE) 문의

0

136

1

4:04질문입니다.

0

110

1

4:39 질문입니다.

0

128

1

질문있습니다.

0

104

1

질문있습니다.

0

106

1

9:11 b에는 a이 주소값이 들어갔다고 하는데 *b의 값이 왜 a랑 같은 값이 나오나요?

0

159

1

빌드 실패 오류 질문 드립니다!

0

391

1

추상화와 클래스중 질문

0

174

1

질문사항 있습니다..동작을 안하고 있어요..

0

338

2

질문 드립니다

0

187

1

함수와 구조체 강의 음성이 이상합니다.

0

197

1

분할 컴파일 과정에서의 오류 발생

0

597

2

<<, >> 비트 연산자에 대한 설명이 맞나요?

0

447

2

포인터 연산

0

384

2

비주얼 스튜디오 코드를 사용해도 되나요?

0

800

1

[정수형 자료형과 실수형 자료형] int보다 long이 더 크다고 했는데 왜 같은 값으로 나오는 건가요?

0

661

1