작성
·
366
0
[8]챕터의 '프렌드'강의에서 마지막에
Time operator+(Time&);을 새롭게 만들어주고
friend Time operator*(int n, Time& t) { return t * n; }으로 새롭게 고쳐주었는데 이때 return t * n이 어떻게, 어떤 식으로 작동할 수 있는 것인지 궁금합니다.
Time& 자체에는 hours와 mins라는 두 개의 변수가 있을 텐데 두 변수에 모두 n을 곱한 값을 return해서 Time operator*(int)에 넘겨주는 것인지, 어떤 형태로 넘겨주는 것인지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
friend Time operator*(int n, Time& t) { return t * n; }
이 코드는 int
와 Time
의 곱셈을 정의하는 연산자 오버로딩 함수로, 구현된 새로운 곱셈 연산을 허용합니다.
t * n
에서 t
는 Time
객체이고, n
은 정수형(int)입니다. 이 때, t * n
은 Time
클래스에 정의된 다른 operator*
함수에서 처리됩니다.
이 때, 곱셈 연산은 Time
객체의 멤버 변수인 hours
와 mins
을 각각 n
으로 곱한 결과를 새로운 Time
객체로 반환합니다. 따라서 함수 내부에서는 t.hours * n
과 t.mins * n
으로 값을 계산한 후, 그 결과를 새로운 Time
객체의 hours
와 mins
변수에 할당하여 반환합니다.
즉, friend Time operator*(int n, Time& t)
함수는 t * n
연산이 수행되도록 하며, 반환되는 값은 Time
객체입니다.
더 자세한 내용이 필요하시다면, Time
클래스에 정의된 operator*
함수의 구현을 살펴보시면 될 것 같습니다.
고맙습니다.