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

1. ์„ค๋ช…


 final ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ž˜์Šค๋‚˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜์˜ ์ƒ์†์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

 

class Parent final // ํด๋ž˜์Šค์— final ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ ํ•œ ๊ฒฝ์šฐ

 

 

2. ์˜ˆ์‹œ


2.1) final๋กœ ์„ ์–ธ ๋œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ–ˆ์„ ์‹œ

#include <iostream>

using namespace std;

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

class Child : public Parent // ์ปดํŒŒ์ผ ์—๋Ÿฌ!! final๋กœ ์„ ์–ธ๋œ ํด๋ž˜์Šค๋Š” ์ƒ์† ํ•  ์ˆ˜ ์—†๋‹ค
{
public:
	Child() { cout << "Child Constructor Call" << endl; }
	void ov

 

2.2) final๋กœ ์„ ์–ธ ๋œ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์ƒ์† ํ–ˆ์„ ์‹œ

#include <iostream>

using namespace std;

class Parent
{
public:
	Parent() { cout << "Parent Constructor Call" << endl; }
	virtual void override_func() final { 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; } // ์ปดํŒŒ์ผ ์—๋Ÿฌ!! final๋กœ ์„ ์–ธ๋œ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ์ˆ˜ ์—†๋‹ค
};
๋ฐ˜์‘ํ˜•

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

[C++] keyword: inline, __inline, __forceinline  (0) 2020.07.22
[C++] keyword: const  (0) 2020.07.22
[C++11] keyword: override  (0) 2020.07.22
[C++] keyword: virtual  (0) 2020.07.22
[C++] keyword: public, protected, private  (0) 2020.07.22