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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기