FaceBook Group "코딩의 아침"
Self Study & Sharing
함수오버로딩 / 함수 오버라이딩
함수오버로딩
함수오버라이딩
Ø C++에서 허용되는 방법
Ø 함수 이름이 같은 함수를 여러개 만들 때,
호출인자의 정보로 함수를 구분하는 방식
ü 핵심 콕콕!
Ø 객체간 상속관계에서 사용되는 문법
Ø 함수의 이름, 매개변수의 개수, 반환타입이
모두 일치해야한다.
Ø 함수의 재활용 및 활용적 측면이 장점이다.
함수오버로딩
ü 개념콕콕!
Ø 조건 1 : 매개변수의 개수를 조절해 보자.
(1) void Draw (int iData1,);
(2) void Draw (int iData1, int iData2);
(3) void Draw (int iData1, int iData2, int iData3);
메인함수에서 Draw(100);을 출력한다면? 다음중 어떤함수가 호출될까요?
(1)번,
동일한 이름의 함수를 호출할 경우 ,
호출한 함수의 매개변수의 개수와 맞는 함수가 호출되는 것을 알 수 있다.
매개변수의 개수를 조절하여 효율적으로 함수를 사용 할 수 있다.
Ctrl + F5 , 코드로 확인 해보기.
[출력결과]
함수오버로딩
ü 개념콕콕!
(1) void Draw (void);
(2) void Draw (int iData);
(3) void Draw (float fData);
Ø 조건 2 : 매개변수의 자료형을 다르게 해보자.
메인함수에서 Draw(100);을 출력한다면? 다음중 어떤함수가 호출될까요?
(2)번,
매개변수에 전달한 자료형에 따라서 어떤 함수가 호출되는지 알 수 있다.
만약 Draw(100.f)를 했다면? (3)번이 호출된다.
또한 인자 없는 void형태의 함수도 정의 할 수 있다. : 사용 : Draw();
[출력결과]
Ctrl + F5 , 코드로 확인 해보기.
매개변수 초기화
ü 한 걸음 더...
Ø 디폴트 매개변수
선언부에 매개변수의 초기값을 미리 설정 할 수 있다.
void형태로 함수를 호출 할 경우, 미리 설정한 초기값이 셋팅되고
함수의 인자로 전달한 경우, 전달한 값이 세팅된다.
단, 초기화는 매개변수의 오른쪽부터 순서대로 해야 유효하다.
[출력결과]
함수오버라이딩
ü 개념콕콕!
Ø 조건 1 : virtual 키워드를 이용하여 함수 오버라이딩을 사용해보자.
부모클래스의 함수를 사용하면서 다른 기능을 추가하는 좋은 방법이다.
부모클래스에서 virtual 키워드를 붙여 생성한 함수는,
자식클래스에서 동일하게 1.함수명 2.매개변수의 개수 3.반환형 이 같은
함수를 추가 할 수 있다.
이때 생성한 함수는 기존기능에 추가기능을 넣거나 새로운 디자인을 하는
경우 유용하게 사용 할 수 있다.
호출시 부모클래스의 함수가 자식클래스의 함수에 의해 가려지게 되는 것을
오버라이딩 되었다고 한다. [코드로 확인해 보자]
만약, 부모클래스의 함수를 호출 하고 싶을 경우
부모클래스::함수()로 명시해 주어야 한다.
[메인함수에서 부모포인터형으로 자식을 가리킨다.]
[출력결과]
Ctrl + F5 , 코드로 확인 해보기.
함수오버라이딩
ü 개념콕콕!
Ø 조건 2 : virtual 키워드 없이, 함수 오버라이딩을 사용해보자.
부모클래스의 함수를 사용하면서 다른 기능을 추가하는 좋은 방법이다.
부모클래스에서 virtual 키워드없이 생성한 함수는,
자식클래스에서 동일하게 1.함수명 2.매개변수의 개수 3.반환형 이 같은
함수를 추가 할 수 있다.
이때 생성한 함수는 기존기능에 추가기능을 넣거나 새로운 디자인을 하는
경우 유용하게 사용 할 수 있다.
호출시 클래스 형에 맞는 포인터로 가리켜야하며,
만약, 부모클래스의 함수를 호출 하고 싶을 경우
부모클래스::함수()로 명시해 주어야 한다.
[메인함수에서 부모포인터형으로 자식을 가리킨다.]
[출력결과]
virtual 키워드만 없앴는데 출력 결과가 달라졌다!
객체를 생성 후 이를 가리키는 포인터 타입! 부모의 함수가 호출되었다.
Ctrl + F5 , 코드로 확인 해보기.
[생성 클래스의 포인터형으로 가리킨다.]
[출력결과]
virtual 키워드가 없는 경우에는 가리키는 포인터형에 맞는
클래스의 함수가 호출 되는 것을 알 수 있다.
Ctrl + F5 , 코드로 확인 해보기.
ü 마무리 정리!
함수 오버로딩 함수 오버라이딩
매개변수의 개수
"다르다"
매개변수의 개수
"같다"
동일함수의
재정의와 관련
동일함수의
재사용과 관련
함수오버라이딩에서 virtual 키워드사용 유무에 따라 포인터의 타입을 신경 써야한다.
FaceBook Group "코딩의아침" www.jusinacademy.com
>> 잘못된 내용은 댓글로 피드백 부탁드립니다. 감사합니다. <<

[C언어]함수오버로딩과오버라이딩

  • 1.
    FaceBook Group "코딩의아침" Self Study & Sharing 함수오버로딩 / 함수 오버라이딩
  • 2.
    함수오버로딩 함수오버라이딩 Ø C++에서 허용되는방법 Ø 함수 이름이 같은 함수를 여러개 만들 때, 호출인자의 정보로 함수를 구분하는 방식 ü 핵심 콕콕! Ø 객체간 상속관계에서 사용되는 문법 Ø 함수의 이름, 매개변수의 개수, 반환타입이 모두 일치해야한다. Ø 함수의 재활용 및 활용적 측면이 장점이다.
  • 3.
    함수오버로딩 ü 개념콕콕! Ø 조건1 : 매개변수의 개수를 조절해 보자. (1) void Draw (int iData1,); (2) void Draw (int iData1, int iData2); (3) void Draw (int iData1, int iData2, int iData3); 메인함수에서 Draw(100);을 출력한다면? 다음중 어떤함수가 호출될까요? (1)번, 동일한 이름의 함수를 호출할 경우 , 호출한 함수의 매개변수의 개수와 맞는 함수가 호출되는 것을 알 수 있다. 매개변수의 개수를 조절하여 효율적으로 함수를 사용 할 수 있다.
  • 4.
    Ctrl + F5, 코드로 확인 해보기. [출력결과]
  • 5.
    함수오버로딩 ü 개념콕콕! (1) voidDraw (void); (2) void Draw (int iData); (3) void Draw (float fData); Ø 조건 2 : 매개변수의 자료형을 다르게 해보자. 메인함수에서 Draw(100);을 출력한다면? 다음중 어떤함수가 호출될까요? (2)번, 매개변수에 전달한 자료형에 따라서 어떤 함수가 호출되는지 알 수 있다. 만약 Draw(100.f)를 했다면? (3)번이 호출된다. 또한 인자 없는 void형태의 함수도 정의 할 수 있다. : 사용 : Draw();
  • 6.
    [출력결과] Ctrl + F5, 코드로 확인 해보기.
  • 7.
    매개변수 초기화 ü 한걸음 더... Ø 디폴트 매개변수 선언부에 매개변수의 초기값을 미리 설정 할 수 있다. void형태로 함수를 호출 할 경우, 미리 설정한 초기값이 셋팅되고 함수의 인자로 전달한 경우, 전달한 값이 세팅된다. 단, 초기화는 매개변수의 오른쪽부터 순서대로 해야 유효하다. [출력결과]
  • 8.
    함수오버라이딩 ü 개념콕콕! Ø 조건1 : virtual 키워드를 이용하여 함수 오버라이딩을 사용해보자. 부모클래스의 함수를 사용하면서 다른 기능을 추가하는 좋은 방법이다. 부모클래스에서 virtual 키워드를 붙여 생성한 함수는, 자식클래스에서 동일하게 1.함수명 2.매개변수의 개수 3.반환형 이 같은 함수를 추가 할 수 있다. 이때 생성한 함수는 기존기능에 추가기능을 넣거나 새로운 디자인을 하는 경우 유용하게 사용 할 수 있다. 호출시 부모클래스의 함수가 자식클래스의 함수에 의해 가려지게 되는 것을 오버라이딩 되었다고 한다. [코드로 확인해 보자] 만약, 부모클래스의 함수를 호출 하고 싶을 경우 부모클래스::함수()로 명시해 주어야 한다.
  • 9.
    [메인함수에서 부모포인터형으로 자식을가리킨다.] [출력결과] Ctrl + F5 , 코드로 확인 해보기.
  • 10.
    함수오버라이딩 ü 개념콕콕! Ø 조건2 : virtual 키워드 없이, 함수 오버라이딩을 사용해보자. 부모클래스의 함수를 사용하면서 다른 기능을 추가하는 좋은 방법이다. 부모클래스에서 virtual 키워드없이 생성한 함수는, 자식클래스에서 동일하게 1.함수명 2.매개변수의 개수 3.반환형 이 같은 함수를 추가 할 수 있다. 이때 생성한 함수는 기존기능에 추가기능을 넣거나 새로운 디자인을 하는 경우 유용하게 사용 할 수 있다. 호출시 클래스 형에 맞는 포인터로 가리켜야하며, 만약, 부모클래스의 함수를 호출 하고 싶을 경우 부모클래스::함수()로 명시해 주어야 한다.
  • 11.
    [메인함수에서 부모포인터형으로 자식을가리킨다.] [출력결과] virtual 키워드만 없앴는데 출력 결과가 달라졌다! 객체를 생성 후 이를 가리키는 포인터 타입! 부모의 함수가 호출되었다. Ctrl + F5 , 코드로 확인 해보기.
  • 12.
    [생성 클래스의 포인터형으로가리킨다.] [출력결과] virtual 키워드가 없는 경우에는 가리키는 포인터형에 맞는 클래스의 함수가 호출 되는 것을 알 수 있다. Ctrl + F5 , 코드로 확인 해보기.
  • 13.
    ü 마무리 정리! 함수오버로딩 함수 오버라이딩 매개변수의 개수 "다르다" 매개변수의 개수 "같다" 동일함수의 재정의와 관련 동일함수의 재사용과 관련 함수오버라이딩에서 virtual 키워드사용 유무에 따라 포인터의 타입을 신경 써야한다.
  • 14.
    FaceBook Group "코딩의아침"www.jusinacademy.com >> 잘못된 내용은 댓글로 피드백 부탁드립니다. 감사합니다. <<