SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
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
>> 잘못된 내용은 댓글로 피드백 부탁드립니다. 감사합니다. <<

Contenu connexe

Tendances

Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12Nam Hyeonuk
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFEChangHyeon Bae
 
10. pointer & function
10. pointer & function10. pointer & function
10. pointer & function웅식 전
 
골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료욱진 양
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Park Jonggun
 
Function & Closure about Swift
Function & Closure about Swift Function & Closure about Swift
Function & Closure about Swift KimDaeho
 
Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Park Jonggun
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리ssuser7c5a40
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229Yong Joon Moon
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장HyeonSeok Choi
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍Hyunsoo Jung
 

Tendances (20)

Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12
 
5 swift 기초함수
5 swift 기초함수5 swift 기초함수
5 swift 기초함수
 
6 swift 고급함수
6 swift 고급함수6 swift 고급함수
6 swift 고급함수
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE
 
10. pointer & function
10. pointer & function10. pointer & function
10. pointer & function
 
골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료
 
Prototype
PrototypePrototype
Prototype
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2
 
javascript01
javascript01javascript01
javascript01
 
Function & Closure about Swift
Function & Closure about Swift Function & Closure about Swift
Function & Closure about Swift
 
STL study (skyLab)
STL study (skyLab)STL study (skyLab)
STL study (skyLab)
 
Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장
 
Lua script
Lua scriptLua script
Lua script
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍
 
What’s new in c++11
What’s new in c++11What’s new in c++11
What’s new in c++11
 
자바스크립트 클래스의 프로토타입(prototype of class)
자바스크립트 클래스의  프로토타입(prototype of class)자바스크립트 클래스의  프로토타입(prototype of class)
자바스크립트 클래스의 프로토타입(prototype of class)
 

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

이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디quxn6
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan Park
 
이펙티브 C++ 789 공부
이펙티브 C++ 789 공부이펙티브 C++ 789 공부
이펙티브 C++ 789 공부quxn6
 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 pptInjae Lee
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4성연 김
 
M5 6 1
M5 6 1M5 6 1
M5 6 1nexthw
 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2문익 장
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdfHyosang Hong
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수유진 변
 
Chapter5 ~ 6
Chapter5 ~ 6Chapter5 ~ 6
Chapter5 ~ 6Injae Lee
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinDong Chan Shin
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7Yeonah Ki
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++KyeongWon Koo
 

Similaire à [C언어]함수오버로딩과오버라이딩 (20)

이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
이펙티브 C++ 789 공부
이펙티브 C++ 789 공부이펙티브 C++ 789 공부
이펙티브 C++ 789 공부
 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 ppt
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
 
M5 6 1
M5 6 1M5 6 1
M5 6 1
 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
 
Mec 56
Mec 56Mec 56
Mec 56
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
EC 789
EC 789EC 789
EC 789
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
Chapter5 ~ 6
Chapter5 ~ 6Chapter5 ~ 6
Chapter5 ~ 6
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshin
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++
 

Plus de jusingame

[C언어] 반복문_for문
[C언어] 반복문_for문[C언어] 반복문_for문
[C언어] 반복문_for문jusingame
 
[C언어] 반복문 (While)
[C언어] 반복문 (While)[C언어] 반복문 (While)
[C언어] 반복문 (While)jusingame
 
[if&switch] 분기문
[if&switch] 분기문[if&switch] 분기문
[if&switch] 분기문jusingame
 
[C++ ]연산자오버로딩
[C++ ]연산자오버로딩[C++ ]연산자오버로딩
[C++ ]연산자오버로딩jusingame
 
[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)jusingame
 
[C++] 상속과 캐스팅(Inheritance & casting)
[C++] 상속과 캐스팅(Inheritance & casting)[C++] 상속과 캐스팅(Inheritance & casting)
[C++] 상속과 캐스팅(Inheritance & casting)jusingame
 

Plus de jusingame (6)

[C언어] 반복문_for문
[C언어] 반복문_for문[C언어] 반복문_for문
[C언어] 반복문_for문
 
[C언어] 반복문 (While)
[C언어] 반복문 (While)[C언어] 반복문 (While)
[C언어] 반복문 (While)
 
[if&switch] 분기문
[if&switch] 분기문[if&switch] 분기문
[if&switch] 분기문
 
[C++ ]연산자오버로딩
[C++ ]연산자오버로딩[C++ ]연산자오버로딩
[C++ ]연산자오버로딩
 
[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)
 
[C++] 상속과 캐스팅(Inheritance & casting)
[C++] 상속과 캐스팅(Inheritance & casting)[C++] 상속과 캐스팅(Inheritance & casting)
[C++] 상속과 캐스팅(Inheritance & casting)
 

[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) void Draw (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 >> 잘못된 내용은 댓글로 피드백 부탁드립니다. 감사합니다. <<