๊ธ€ ์ž‘์„ฑ์ž: ๋˜ฅํด๋ฒ .
๋ฐ˜์‘ํ˜•

1. ์„ค๋ช…


 ์‹ค์ˆ˜๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(overriding)ํ•ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋ฏธ์—ฐ์— ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

void override_func() override { cout << "Child override_func Call" << endl; }

 

2. ์˜ˆ์‹œ


2.1) override๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ์‹œ

#include <iostream>

using namespace std;

class Parent
{
public:
	Parent() { cout << "Parent Constructor Call" << endl; }
	virtual void override_func() { cout << "Parent override_func Call" << endl; }
};

class Child : public Parent
{
public:
	Child() { cout << "Child Constructor Call" << endl; }
	void override_func() override { cout << "Child override_func Call" << endl; }
};


int main() {
	Parent* p;
	p = new Child;
	p->override_func();
	
	return 0;
}
Parent Constructor Call
Child Constructor Call
Child override_func Call

 

2.2) override๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ override ๋œ ํ•จ์ˆ˜๊ฐ€ ์—†์„ ์‹œ

#include <iostream>

using namespace std;

class Parent
{
public:
	Parent() { cout << "Parent Constructor Call" << endl; }
	virtual void override_func() { cout << "Parent override_func Call" << endl; }
};

class Child : public Parent
{
public:
	Child() { cout << "Child Constructor Call" << endl; }
	void override_func() const override { cout << "Child override_func Call" << endl; } // ์ปดํŒŒ์ผ ์—๋Ÿฌ
};


int main() {
	Parent* p;
	p = new Child;
	p->override_func();
	
	return 0;
}

Parent์˜ void override_func() ์™€ Child์˜ void override_func() const๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ˜•์‹์ด๋ผ ์˜ค๋ฒ„๋ผ์ด๋“œ(override) ๋˜๋Š”๊ฒŒ ์—†๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  override ํ‚ค์›Œ๋“œ๋ฅผ ์ง€์ •ํ•ด์คฌ์œผ๋ฏ€๋กœ ์—๋Ÿฌ!

๋ฐ˜์‘ํ˜•

'Language > C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C++] keyword: const  (0) 2020.07.22
[C++11] keyword: final  (0) 2020.07.22
[C++] keyword: virtual  (0) 2020.07.22
[C++] keyword: public, protected, private  (0) 2020.07.22
[C/C++] Socket Send/Receive Buffer์— ๋Œ€ํ•œ ๊ณ ์ฐฐ  (1) 2019.07.08