virtual function - Gakgu/Gakgu.github.io GitHub Wiki
κ°μ
κ°μ ν¨μ. λΆλͺ¨ ν΄λμ€ ν¬μΈν°κ° μμ ν΄λμ€μ λ©€λ²ν¨μλ₯Ό νΈμΆν λ μ¬μ©νλ ν¨μμ΄λ€.
κ°μν¨μμ νν
ν΄λμ€ μ μΈλ¬Έμμ λ§΄λ² ν¨μμ μμ virtualμ λΆμΈλ€.
virtual void example();
μ€μν λ¬Έλ²μ μ¬μ€
-
λΆλͺ¨ ν΄λμ€λ μμ ν΄λμ€λ₯Ό λμ λ°μ μ μμΌλ©° ν¬μΈν° λν λ§μ°¬κ°μ§μ΄λ€. κ·Έ λ°λλ λΆκ°λ₯νλ€.
class Parent parent, *ptr_parent; class Child child, *ptr_child; parent = child // Ok. ptr_parent = ptr_child // Ok. child = parent // Error ptr_child = ptr_parent // Error
-
λΆλͺ¨ ν΄λμ€νμ μ ν¬μΈν°κ° μμ ν΄λμ€μ μ£Όμλ₯Ό κ°λ¦¬ν¨λ€ ν΄λ κ°μν¨μκ° μλ λ§΄λ²ν¨μλ₯Ό νΈμΆν λμλ λΆλͺ¨ ν΄λμ€νμ μ λ©€λ²ν¨μκ° νΈμΆλλ€.
Parent *p; p = ptr_parent; p->function() // Parent ν΄λμ€μ function() νΈμΆ p = ptr_child; p->function() // Parent ν΄λμ€μ function() νΈμΆ
μμ κ°μ ν¨μ
μ μκ° μλμ΄ μλ κ°μ ν¨μλ₯Ό μλ―Ένλ€. κ°μ ν¨μμ λμ =0μ λΆμΈλ€.
virtual void example()=0;
κ°μν¨μμ μμ±μ, νκ΄΄μ
λΆλͺ¨ ν΄λμ€μ νκ΄΄μλ νμ κ°μν¨μλ‘ μ°λ κ²μ΄ μ’λ€.