ê²°ë¡
: ë€í¥ì±ì ìí ììì ë°ëì ê°ì ìë©žì륌 ë°ëì ìì±íì!
ìŽì :
ì ìºì€í ì í 겜ì°, c++ì Ʞ볞ì ì± ìž ì ì ë°ìžë©ìŒë¡ ìžíŽ ê°ì²Žë baseTypeìŒë¡ ê²°ì ëìŽì ê°ì²Ž íŽì ì base ìë©žìê° ížì¶ëë€.
íì§ë§ virtual í€ìë륌 ìë©žìì ìì±íë©Ž ëì ë°ìžë©ìŒë¡ ìžíŽ ê°ì²Žë
derivedTypeìŒë¡ ê²°ì ëìŽì ê°ì²Ž ìë©žìì íìíŽëì€ì ìë©žìê° ížì¶ëë€.
íì§ë§!
ëšë ìŒë¡ ì¬ì©ëë íŽëì€ë í íì ìì.
ì€íë € ê°ì í¬ìží° íëê° ë©ëªšëŠ¬ì ìì±ëêž° ë묞ì.
1) virtual í€ìë
2) override í€ìë
: c++11 ë¶í° ëìì.
3) final í€ìë
: íì íŽëì€ìì ê°ìíšì륌 ì¬ì ì í ì ìëë¡ íêž°ìí í€ìë
4) cppì í€ë 구ë¶ì,
: ìì 3ê°ì í€ìëë ì ìžë¶ìë§ íêž°íê³ , 구íë¶ìë íêž°íì§ ë§ì.
https://online-unreal.tistory.com/77
https://leemoney93.tistory.com/63
ê°ì ìë©žìë ë€í¥ì±ì ì¶êµ¬íë íŽëì€ìë§ ë¶ì¬ìŒ íš.
ëšë ìŒë¡ ì¬ì©ëë íŽëì€ìë ê¶ ìŽ ë¶ìŒ íì ìì.
ì€íë € ê°ì íšì í¬ìží°íê°ê° ë©ëªšëŠ¬ì ì¶ê°ë ë¿.
- ê°ì ìë©žì륌 íŽìŒ íë ìŽì
: c++ì Ʞ볞 ë°ìžë©ì ì ì ë°ìžë©ìŽêž° ë묞ì,
ì ìºì€í ììë íì íì ìŽ ìë Base íŽëì€ íì ìŒë¡ ê²°ì ëš,(ìŠ í¬ìží° íì )
ê°ì²Ž íŽì ì ì ì ë°ìžë©ì ìíŽ base íŽëì€ì ìë©žìê° ížì¶ëë€.
- ê·žëì ìŽë»ê² í ê²ëë©Ž?
ì€í ìê°ì ì€ì íŽëì€ì íšì륌 ížì¶í ì ìê² íë virtual í€ìë륌 ì¬ì©íì. ìŽë¥Œ ëì ë°ìžë©ìŽëŒê³ íë€.
íì íŽëì€ì íì ìŒë¡ ê²°ì íêž° ìíŽìë ëì ë°ìžë©ì íŽìŒ íë€.
virtaul í€ìë륌 ìì±íêž°ë§ íë©Žëë€.
base íŽëì€ì derived íŽëì€ì ìë©žìì virtual í€ìë륌 ìì±íì.
derived íŽëì€ì ìì±ì ì§ì ì vTableì íìíŽëì€ ìë©žìì í¬ìží°ê° êž°ë¡ëë€.
ìŽë¡ ìžíŽ ì ìºì€í ê°ì²Ž ìë©žì derived ê°ì²Žì ìë©žìê° ížì¶ëë€.
- ê·Œë° ê¶êží ê²ìŽ êž°ì¡Žì virtual íšììë ë€ë¥Žê² ê°ì ìë©žìë ì ë§ì§ë§ì base ìë©žìë ížì¶í ê¹?
: ìŽê±°ë ìë©žìì í¹ì±ì ë°ë¥Žêž° ë묞ìŽë€.
ìë©žìë í늬 ìììì ë¶ëªš íŽëì€ì ìë©žìì ë©€ë² ê°ì²Žì ìë©žì륌 ížì¶íêž° ë묞ìŽë€.
ê°) ê°ì ìë©žì ììŽ ì
ìºì€í
íŽì , íììŽì ìë©žìê° ížì¶ëëì§ë¥Œ
íìžíëŒ.
-> íì íŽëì€ì ìë©žìê° ížì¶ëì§ ìì.
ë§ìœì êž°ë°ê³Œ íì ìì±ììì ëì í ë¹íê³ , ìë©žììì ê°ê° íŽì§íë€ê³ íë€ë©Ž? -> íì íŽëì€ì ìë©žì ížì¶ëì§ ììŒë¯ë¡, ë©ëªšëŠ¬ ëì ë°ìíš.
ë) ê°ì ìë©žì륌 ë§ë€ìŽ ë³Žê³ ì¶ë ¥íëŒ.
-> ê°ì ìë©žì륌 ë§ë€ìŽì , ìë©žìê° ížì¶ëšì íìžíš.
ì êž°íê²ìŽ ë€ë¥ž ê°ìíšìë€ê³Œë ë€ë¥Žê² ì¬ì ìë íììë©žìë§ ížì¶íŽìŒ íëë°, ì§êžì 겜ì°, ë¶ëªš ìë©žìë ížì¶íê³ ìë€.
ìŽì ë ììë€ê° ìì±íš.
: ë€í¥ì± ììì 구ííë€ê³ í ë, ë°ëì êž°ë° íŽëì€ì
ìë©žìë ê°ìíšìë¡ ë§ë€ìŽìŒ íš.
: ìììŽ ì©ëê° ìë , ëšë ìŒë¡ ì¬ì©ëë íŽëì€ë
ê°ì ìë©žì ìì±íë©Ž ìëš!
-> ê°ì íšì í¬ìží° íê°ê° í¬íšëêž° ë묞
: êž°ë° íŽëì€ìì ê°ìíšìê° ìì ê²œì° ìì±ëš.
ê°ìíšì í¬ìží°ë ê°ì²Ž ìì±í ëë§ë€ ë§ë€ìŽì§ê³ , ìŽë ê³µì©ì ê°ìíšì í ìŽëžì ì°žì¡°íê³ ìë€. ê·žëŠ¬ê³ ê°ì²Žìì ê°ìíšì ížì¶ì, íŽë¹ ê°ì²Žì 죌ì thiscall ì íµíŽì ížì¶ìŽ ìŽë£šìŽì§ë€. (funda c++ ì°žê³ )
êž°ë° íŽëì€ì ìì±ì, íì íŽëì€ ìì±ì ììë¡ ì§ì
íë©Žì
ìŽë€ íšìì í¬ìží°ë¥Œ ê°ëŠ¬í¬ ê²ìžì§ì ëí ê²ì ê²°ì íš.
ìŽ ë íìíŽëì€ì ì€ë²ëŒìŽë© íšìì 죌ìê° ë®ìŽìšì§.
: ê°ìíšìì 죌ìê° ì ì¥ëìŽ ìë í ìŽëž
ê°ì íšì í
ìŽëžì 컎íìŒìì íŽëì€ë§ë€ íê°ì© ë§ë€ìŽì§ë€.
ê°ì²Žë§ë€ ìì±ëë ê²ìŽ ìëë€. (funda c++ ì°žê³ )
ê°ì íšì í¬ìží°ê° ìŽ í ìŽëžì ì°žì¡° íê³ ìì.
ê°ì íšì ížì¶ì, vptr ìŽ vtableì ì°žì¡° íê³ ,
vTableì êž°ë¡ë 죌ìì íšì륌 ížì¶íš.