[C++] 매개변수의 디폴트 값 문제 01-3
문제 1
#include <iostream>
int BoxVloume(int length,int width =1 ,int height = 1);
int main(void)
{
std::cout<<"[3, 3, 3] : "<<BoxVloume(3,3,3)<<std::endl;
std::cout<<"[5, 5, D] : "<<BoxVloume(5,5)<<std::endl;
std::cout<<"[7, D, D] : "<<BoxVloume(7)<<std::endl;
//std::cout<<"[D, D, D] : "<<BoxVloume()<<std::endl; 에러 !!
return 0;
}
int BoxVloume(int length,int width ,int height)
{
return length*width*height;
};
이 코드의 BoxVolume을 매개변수의 디폴트 값 지정 형태가 아닌 함수 오버로딩 형태로 재 구현해보자.
#include <iostream>
int BoxVloume(int length,int width ,int height)
{
return length*width*height;
};
int BoxVloume(int length,int width)
{
return length*width*1;
};
int BoxVloume(int length)
{
return length*1*1;
};
int main(void)
{
std::cout<<"[3, 3, 3] : "<<BoxVloume(3,3,3)<<std::endl;
std::cout<<"[5, 5, D] : "<<BoxVloume(5,5)<<std::endl;
std::cout<<"[7, D, D] : "<<BoxVloume(7)<<std::endl;
//std::cout<<"[D, D, D] : "<<BoxVloume()<<std::endl; 에러 !!
return 0;
}
구냥.. 바꿔주면 된다.
문제 2
다음과 같은 형태로의 함수 오버로딩은 문제가 있다.
어떠한 문제가 있는지 설명해보자 !
int SimpleFunc(int a = 10)
{
return a+1;
}
int SimpleFunc(void)
{
return 10;
}
첫번째 SimpleFunc이 디폴트 값을 주었으니
SimpleFunc() 을 실행하면
두번째 SimpleFunc(void)함수도 실행되고
첫번째 SimpleFunc 함수의 디폴트 값이 실행될것이니
충돌이 일어날것이다!!
즉! SimpleFunc() 을 실행하면 두 함수 모두 호출하는 결과를 가져온다.
Author And Source
이 문제에 관하여([C++] 매개변수의 디폴트 값 문제 01-3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seochan99/C-매개변수의-디폴트-값-문제-01-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)