1. Overloading
=> 상속과는 관계 없이 동일한 Class내에 동일한 Method 이름으로 다른 파라미터를 이용하여 다른 함수를 만드는 것
=> 특징
-> Method 이름이 같아야 함
-> Return 자료형은 상관없음
-> Param 개수가 달라야 함(다를경우에는 자료형이 다름)
#include<iostream>
using namespace std;
class A
{
public :
void func(int a)
{
cout << "int : " << a << endl;
}
void func(char a)
{
cout << "char : " << a << endl;
}
void func(int a, int b)
{
cout << "Two int : " << a << " " << b << endl;
}
};
int main()
{
A a;
a.func(1);
a.func('a');
a.func(1, 2);
return 0;
}
2. Overriding
=> 자식 클래스에서 부모 클래스의 Method의 동작을 재정의하여 사용하는 것
=> 특징
-> 오버라이드 하고자 하는 Method가 부모 클래스에 존재해야함
-> Method 이름이 같아야함
-> 리턴형 / 파라미터 개수 / 파라미터 자료형이 같아야함
-> 상위 메소드와 동일하거나 추가적인 내용이 있어야 함
#include<iostream>
using namespace std;
class A
{
public :
void func(int a)
{
cout << "Class A" << endl;
}
};
class B : public A
{
public :
void func(int a)
{
cout << "Class B" << endl;
}
};
int main()
{
A a;
B b;
a.func(1);
b.func(1);
return 0;
}
'C++ > Tips' 카테고리의 다른 글
[c++ 14] deprecated (0) | 2021.06.11 |
---|---|
[c++ 11]Range based for (0) | 2021.06.10 |
깊은복사(Deep Copy) vs 얕은복사(Shallow Copy) (0) | 2021.05.31 |
Call by value vs Call by reference (0) | 2021.05.28 |
[c++/vector]emplace vs push_back (0) | 2021.03.30 |