1. 명시적 캐스트
<error> (테스트 케이스 통과 x)
long long function(int a, int b, int c) {
    return a * b * c;    // 오버플로우 가능성
}
<해결>
long long function(int a, int b, int c) {
    return static_cast<long long>(a) * b * c;
}
2. 'Overload operator <' : 클래스 안에서 정의
3. 'Overload operator <<' : 클래스 내부에서 friend로 선언하고 클래스 밖에서 정의

<GPT>
명시적 캐스트 (static_cast<long long>): C++에서는 서로 다른 데이터 형식을 다룰 때 명시적인 캐스팅이 필요할 수 있습니다. 이 경우 static_cast<long long>를 사용하여 곱셈 결과를 올바르게 long long으로 캐스트함으로써 오버플로우 문제를 방지할 수 있습니다.
연산자 오버로딩 (operator<): C++에서 연산자를 오버로딩하는 것은 강력한 기능 중 하나입니다. 여러분의 경우, 클래스 내에서 작성한 작은-쓰기 연산자 (<)를 오버로딩함으로써 해당 클래스의 객체에 대한 사용자 지정 비교 논리를 정의할 수 있습니다.
friend를 사용한 연산자 오버로딩 (operator<<): 클래스 내에서 operator<<를 friend 함수로 선언하고 클래스 외부에서 정의함으로써 해당 함수가 클래스의 private 멤버에 접근할 수 있도록 합니다. 이것은 클래스의 출력 스트림 연산자 (<<)를 오버로딩할 때 흔히 사용되는 접근 방식입니다.

 

 

 

https://www.hackerrank.com/challenges/box-it/problem?isFullScreen=true

 

Box It! | HackerRank

Design a class named Box with overloaded operators.

www.hackerrank.com

 

'C&C++' 카테고리의 다른 글

C++ getline() 종류  (0) 2024.10.20
C / C++ > NaN  (0) 2024.03.11

+ Recent posts