[c++_9. 함수의 중첩, 오버로딩]

·2022년 8월 11일
0

C++_Study

목록 보기
16/25

✓ 객체지향언어: 캡슐화, 상속, 다형성

#9-1. c++에서 다형성 (polymorphism)

  • 함수 중첩 (function overloading)
  • 생성자 중첩
  • 디폴트 인자 (default parameter)

#9-2. 함수 오버로딩(중첩)

  • 다형성을 구현하는 한 가지 방법
  • 수의 절대값을 구하는 함수
    • abs() /int, abs(-4)=4
    • labs() /long, labs(-3l)=3
    • fabs() /float, fabs(-3.6f)=3.6
  • 하나의 함수명을 여러 개의 유사목적으로 사용할 수 있다.

#9-3. 함수 오버로딩 실습

// c++에서의 다형성, 중첩, 디폴트 인자
// 함수 오버로딩
// Function overloading, Operator overloading, 

int add(int i, int j)
{
    return (i+j);
}
double add (double i, double j)
{
    return(i+j);
}

// 추가할 수 없다, 오버로딩된 함수가 return 값만 다르기 때문! 
// double add(int i, int j)
// {
//     return ((double)i+(double)j);
// }

int main() 
{
    std::cout << add(10,20)<< std::endl;
    std::cout << add(10.5,20.3)<< std::endl; 
    return 0;
}
  • 제너릭 function, 템플릿 사용!
    • 'template T Max(T i, T j)'
template <class T>
T Max(T i, T j)
{
    return i > j ? i : j;
}
int main()
{
    std::cout << Max(1,2) << std::endl;
    std::cout << Max(7.5, 3.6) << std::endl;
    std::cout << Max('A','B') << std::endl;
    return 0;
}

#9-4. 함수 오버로딩 C vs C++

  • 컴파일러가 실매개변수의 개수에 따라서 자동적으로 해당 함수를 연결해준다.
int add(int i, int j)
{
    return (i+j);
}
int add(int i, int j, int k)
{
    return (i+j+k);
}
int add(int i, int j, int k, int l)
{
    return (i+j+k+l);
}
int main(){
    std::cout<<add(1,2)<<std::endl;
    std::cout<<add(1,2,3)<<std::endl;
    std::cout<<add(1,2,3,4)<<std::endl;
    return 0;
}

#9-5. 함수 중첩하는 경우: 매개변수의 형이나 개수가 다른 경우

profile
Hakuna Matata

0개의 댓글

관련 채용 정보