[C++] keyword: virtual
1. ์ค๋ช
์์ ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์ํ๊ณ , ๋ถ๋ชจ ํด๋์ค์ ํจ์๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ๋ค๊ณ ๊ฐ์ ,
๋คํ์ฑ์ ์ด์ฉํด ๋ถ๋ชจ ํด๋์ค์ ํฌ์ธํฐ๋ก ์์ ์ธ์คํด์ค ์ฃผ์ ๊ฐ์ ์ง์ ํ๊ณ ์ค๋ฒ๋ผ์ด๋ฉ ํ ํจ์๋ฅผ ํธ์ถํ์ ๋ virtual ํค์๋์ ์ ๋ฌด์ ๋ฐ๋ผ ์คํ๋๋ ํจ์๊ฐ ๋ฌ๋ผ์ง๋ค.
virtual ํค์๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๊ฐ์ ํจ์ ํ ์ด๋ธ์ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ์ ์ค๋ฒํค๋๊ฐ ์กด์ฌํ๋ค. ๋ฐ๋ผ์ virtual ํค์๋๋ C++์์ default๊ฐ ์๋๊ณ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ง์ ํด์ค์ผํ๋ค.
virtual void speak() = 0;
์์ ๊ฐ์ด virtual ํค์๋ ๋งจ ์ฐ์ธก์ = 0; ์ ์ง์ ํด์ฃผ๋ฉด ํด๋น ํจ์๋ ์์ ๊ฐ์ ํจ์(pure virtual function)๊ฐ ๋๋ค. ์์ ๊ฐ์ ํจ์๋ ์ง์ ํธ์ถ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ ๋ฐ๋์ ์ค๋ฒ๋ผ์ด๋ฉ(overriding) ๋์ด์ผ๋ง ํ๋ค.
2. ์์
2.1) virtual ํค์๋๊ฐ ์์ ์
#include <iostream>
using namespace std;
class Parent
{
public:
Parent() { cout << "Parent Constructor Call" << endl; }
void virtual_func() { cout << "Parent virtual_func Call" << endl; }
};
class Child : public Parent
{
public:
Child() { cout << "Child Constructor Call" << endl; }
void virtual_func() { cout << "Child virtual_func Call" << endl; }
};
int main() {
Parent* p;
p = new Child;
p->virtual_func();
return 0;
}
Parent Constructor Call
Child Constructor Call
Parent virtual_func Call
2.1) virtual ํค์๋๊ฐ ์์ ์
#include <iostream>
using namespace std;
class Parent
{
public:
Parent() { cout << "Parent Constructor Call" << endl; }
virtual void virtual_func() { cout << "Parent virtual_func Call" << endl; }
};
class Child : public Parent
{
public:
Child() { cout << "Child Constructor Call" << endl; }
void virtual_func() { cout << "Child virtual_func Call" << endl; }
};
int main() {
Parent* p;
p = new Child;
p->virtual_func();
return 0;
}
Parent Constructor Call
Child Constructor Call
Child virtual_func Call
'Language > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] keyword: const (0) | 2020.07.22 |
---|---|
[C++11] keyword: final (0) | 2020.07.22 |
[C++11] keyword: override (0) | 2020.07.22 |
[C++] keyword: public, protected, private (0) | 2020.07.22 |
[C/C++] Socket Send/Receive Buffer์ ๋ํ ๊ณ ์ฐฐ (3) | 2019.07.08 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C++11] keyword: final
[C++11] keyword: final
2020.07.22 -
[C++11] keyword: override
[C++11] keyword: override
2020.07.22 -
[C++] keyword: public, protected, private
[C++] keyword: public, protected, private
2020.07.22 -
[C/C++] Socket Send/Receive Buffer์ ๋ํ ๊ณ ์ฐฐ
[C/C++] Socket Send/Receive Buffer์ ๋ํ ๊ณ ์ฐฐ
2019.07.08