[01-3] 문제

김민성·2022년 7월 10일
post-thumbnail

문제 1

예제 DefaultValue3.cpp에 정의된 함수 BoxVolume를 '매개변수의 디폴트 값 지정' 형태가 아닌, '함수 오버로딩'의 형태로 재 구현해보자. 물론 main함수는 변경하지 않아야 하며, 실행결과도 동일해야 한다.

int main(void) {
    std::cout<<"[3, 3, 3] : "<<BoxVolume(3, 3, 3)<<std::endl;
    std::cout<<"[5, 5, D] : "<<BoxVolume(5, 5)<<std::endl;
    std::cout<<"[5, D, D] : "<<BoxVolume(5)<<std::endl;
    return 0;
}
[3, 3, 3] : 27
[5, 5, D] : 25
[5, D, D] : 5

위의 메인함수를 건들지 않고 같은 실행결과를 도출해내면 된다. 함수 오버로딩의 형태로 구현하기 위해서는 각 호출하는 함수의 인자의 갯수로 함수를 구분지으면 되는 것이다!
인자 3개, 인자 2개, 인자 1개를 각각 받는 함수를 오버로딩하면 된다.

#include <iostream>

int BoxVolume (int length, int width, int height) {
    return length*width*height;
}

int BoxVolume (int length, int width) {
    return length*width*1;
}

int BoxVolume (int length) {
    return length*1*1;
}

int main(void) {
    std::cout<<"[3, 3, 3] : "<<BoxVolume(3, 3, 3)<<std::endl;
    std::cout<<"[5, 5, D] : "<<BoxVolume(5, 5)<<std::endl;
    std::cout<<"[5, D, D] : "<<BoxVolume(5)<<std::endl;
    //std::cout<<"[D, D, D] : "<<BoxVolume()<<std::endl;
    return 0;
}

나는 교재의 답안과 약간은 다르게 코드를 짰다.

#include <iostream>

int BoxVolume (int length, int width, int height) {
    return length*width*height;
}

int BoxVolume (int length, int width) {
    int height=1;
    return length*width*height;
}

int BoxVolume (int length) {
    int width=1;
    int height=1;
    return length*width*height;
}

int main(void) {
    std::cout<<"[3, 3, 3] : "<<BoxVolume(3, 3, 3)<<std::endl;
    std::cout<<"[5, 5, D] : "<<BoxVolume(5, 5)<<std::endl;
    std::cout<<"[5, D, D] : "<<BoxVolume(5)<<std::endl;
    //std::cout<<"[D, D, D] : "<<BoxVolume()<<std::endl;
    return 0;
}

거의 비슷하긴 하나, 나는 BoxVolume을 계산하는 함수에서 length, width, height를 각각 모두 변수로 살려둬야 하는 것이 취지에 맞는 해설이 아닌가.. 생각이 들었다.

profile
다양한 활동을 통해 인사이트를 얻는 것을 즐깁니다. 저 또한 인사이트를 주는 사람이 되고자 합니다.

0개의 댓글