노력과 삽질 퇴적물
OOP: 다형성 본문
객체지향 프로그래밍(OOP) = 캡슐화 + 다형성 + 상속
다형성?
=> 클래스내 함수들 이름이 같아도 반환타입이나 입력_인수가 다르면, 함수들의 동작은 각각 다르다.
ex. int printSum (int a, int b);
float printSum (float a, float b);
void printSum (int n);
void printfSum ();
1. 오버로드
-> 함수명은 같아도, 반환값이나 인수값(매개변수)의 자료형이 다르다. [동명이형]
-> 입력되는값을 거의 자동으로 인수값이 맞는 함수에 넣음.
-> 오버라이드와는 다르다. 오버라이드는 상위 클래스 메소드(함수)를 하위 클래스에서 재정의 하는것.
#include <iostream>
using namespace std;
int function(int number);float function(float number);
int main(){float in = 0;int type_size = 0;int result_i = 0;float result_f = 0;
cout << "정수나 실수를 입력하시오: ";cin >> in;type_size = sizeof(in);
if ( in != (int) in ) //float인지 체크{result_f = function(in); // float result_fcout << "\t(float) 2 * " << in << " == " << result_f << endl;}else if ( in == (int) in) //int인지 체크{result_i = function(in); // int result_icout << "\t(int) 2 * " << in << " == " << result_i << endl;}else{function();}
return 0;}
int function(int number){int r = 0;r = number * 2;
return r;}float function(float number){float r = 0;r = number * 2;
return r;}
2. 함수템플릿(*.cpp 한정)
//template <class class_t>template <typename datatype_usr>
datatype sum(datatype_usr a, datatype_usr b){return (a + b);} // 다형성처럼, 자료형과 표현하는 방식이 달라도 기본적인 처리법이 같을때 유용.
'📂기초 및 세팅 note > 언어. C&C++ 계열' 카테고리의 다른 글
OOP: 상속(or 계승) (0) | 2011.07.25 |
---|---|
생성자 & 소멸자 (0) | 2011.07.25 |
OOP: 캡슐화 (0) | 2011.07.23 |
전역변수, 지역변수, 정적변수, 동적변수 (0) | 2011.07.22 |
구조체 & 클래스 & 공용체 & 열거형 (0) | 2011.07.14 |