νλμ νμ μ μ¬λ¬ κ°μ²΄λ₯Ό λμ ν μ μλ μ±μ§
λ€νμ±μ΄λΌλ κ°λ μ μκΈ°μ μ λ€νμ±κ³Ό λ°μ νκ² κ΄λ ¨μ΄ μλ μμμ΄λΌλ κ°λ μ μ΄ν΄λ©΄ λ μ½κ² μ¬μ©ν μ μλ€.
Inheritance ( μμ )
λΆλͺ¨ν΄λμ€μ μλ λ©€λ² ν¨μλ λ©€λ² λ³μλ€μ λ¬Όλ € λ°μμ μλ‘μ΄ ν΄λμ€λ₯Ό λ§λλ κ²
class Parent
{
public:
...
};
class Child : public Parent
{
public:
...
}
ν΄λμ€μμλ μμκ°μ΄ λ€λ₯Έ ν΄λμ€λ₯Ό μμλ°μμ μ¬μ©νλ κ²μ΄ κ°λ₯νλ€.
parentλΌλ classλ₯Ό childλΌλ ν΄λμ€κ° λ°μμ μ¬μ©νλ λ°©μμ΄λ€.
( μ΄λ μμμ λ°λ ν΄λμ€λ₯Ό μμν΄λμ€λΌκ³ μ΄μΌκΈ°νκ³ μμμ ν΄μ£Όλ ν΄λμ€λ₯Ό λΆλͺ¨ν΄λμ€λΌκ³ μ΄μΌκΈ°νλ€. )
μμ κ°μ λ°©μμΌλ‘ μμμ λ°μΌλ©΄ μμμ ν΄μ£Όλ λ²μμ λ°λΌ λΆλͺ¨ν΄λμ€μ μλ λ§€κ°λ³μλ λ§€κ°ν¨μλ±μ μ¬μ©κ°λ₯νκ² λλ€.
polymorphism ( λ€νμ± )
μλ‘ λ€λ₯Έ κ°μ²΄κ° λμΌν λ©μΈμ§μ λνμ¬ μλ‘ λ€λ₯Έ λ°©λ²μΌλ‘ μλ΅ν μ μλ κΈ°λ₯
λΆλͺ¨ ν΄λμ€μκ²μ μμλ°μ λ§€κ°ν¨μλ₯Ό μμν΄λμ€μμλ κ·Έ κΈ°λ₯ κ·Έλλ‘ μ¬μ©νλ κ²μ΄ μλλΌ μμν΄λμ€μμ μ¬μ©μ©λμ λ°λΌ μ¬μ μΈνμ¬ λ³κ²½νμ¬ μ¬μ©νλ κ²μ λ€νμ±μ΄λΌκ³ μ μλ₯Ό νλ€.
class Parent
{
public:
void hello()
{
std::cout << "parent";
}
};
class Child : public Parent
{
public:
void hello()
{
std::cout << "Child";
}
}
μμ κ°μ λ°©μμ²λΌ μμμ λ°μ μμν΄λμ€μμ λ§€κ°ν¨μλ₯Ό μ¬μ μνλ λ°©μμΌλ‘ μ¬μ©νλ κ²μ μ΄μΌκΈ°νλ€.
μμ : λΆλͺ¨ ν΄λμ€μ μλ ν¨μλ₯Ό μμ ν΄λμ€κ° μμλ°μ μ¬μ©νλκ².
λ€νμ± : λΆλͺ¨ ν΄λμ€μ μλ ν¨μλ₯Ό μμ ν΄λμ€κ° μμμ λ°μ§λ§ μν©μ λ§μΆ° μ¬μ μνμ¬ μ¬μ©νλκ²
Ad-hoc polymorphism
μ΄λ¦μ κ°μ§λ§ λ€λ₯Έ λ§€κ°λ³μλ₯Ό λ°λκ²
int sum(int a, int b)
{
return a + b;
}
double sum(double a, double b)
{
return a + b;
}
μμκ°μ΄ classλ΄λΆμμ κ°μ μ΄λ¦μ λ§€κ°ν¨μμ΄μ§λ§ λ°λ μ λ ₯κ°μ΄ λ€λ₯΄κ² μ€μ νλ κ²½μ°λ₯Ό Ad-hoc polymorphism μ΄λΌκ³ μ μνλ€.
[C++] μμκ³Ό λ€νμ± (Inheritance & Polymorphism)
[C++] μμκ³Ό λ€νμ± (Inheritance & Polymorphism)
μ°μ μ¬κΈ°μλ μμκ³Ό λ€νμ±μ λν κ°λ¨ν μλ―Έλ§ μ 리 νκ³ λμ΄κ° κ²μ λλ€. λ€μμ μμκ³Ό λ€νμ±μ λν΄μ λ μμΈν ν¬μ€ν μ ν κ²μ λλ€. μμ (Inheritance) : μμμ κΈ°μ‘΄μ ν΄λμ€λ₯Ό ν
pacs.tistory.com
μμ λ§ν¬λ₯Ό μ°Έκ³ νμ¬ ν΄λΉ κΈμ μμ±νμμ΅λλ€.
'42seoul > projects' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[CPP Module] 04 (0) | 2023.09.13 |
---|---|
[C++] endl κ³Ό β\nβ μ°¨μ΄μ (0) | 2023.09.02 |
[C++] operator overloading ( μ°μ°μ μ€λ²λ‘λ© ) operator overriding ( μ°μ°μ μ€λ²λΌμ΄λ© ) (0) | 2023.09.02 |
[CPP Module] 03 (0) | 2023.07.29 |
[CPP Module] 02 (0) | 2023.07.25 |