KH_C++
μμ±μ(Constructor), μλ©Έμ(Destructor) λ³Έλ¬Έ
μμ±μ(Constructor)
π μμ±μλ κ°μ²΄κ° μμ±λλ©΄ μλμΌλ‘ νΈμΆλλ κ²μΌλ‘ μμ±μκ° μ μλμ΄ μλ€λ©΄ ν΄λΉ μμ±μκ° νΈμΆλλ€.
μμ±μμ μλ©Έμλ ν΄λμ€ κ°μ²΄κ° μμ± λ° μλ©Έλ λ μλμΌλ‘ νΈμΆλλ ν¨μμ΄λ€. μμ±μμ μλ©Έμλ λ°ν νμμ΄ μλ€λ κ²μ΄ νΉμ§μ΄λ€.
μμ±μ κ³Όμ
μμ±μλ public μμ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§κ³ μμ±λλ€.
1) ν΄λμ€μ μ΄λ¦κ³Ό ν¨μμ μ΄λ¦μ΄ λμΌνλ€.
2) λ°ννμ΄ μ μΈλμ΄ μμ§ μμΌλ©°, μ€μ λ‘ λ°ννμ§ μλλ€.
μ΄λ¬ν μ νμ ν¨μλ₯Ό κ°λ¦¬μΌ μμ±μλΌκ³ νλ©°, κ°μ²΄ μμ±μ λ± νλ²λ§ νΈμΆλλ€.
void ShowInfo() λ κ°μ²΄λ©€λ²λ€μ κ°μ μΆλ ₯νλ€.
κ·Έλ¦¬κ³ λ©μΈν¨μμμ Point2D p1; μ΄λΌκ³ μ μΈνκ² λλ©΄ μ μΈκ³Ό λμμ λ©€λ²κ° μ΄κΈ°νκ° λ©λλ€.
μ»΄νμΌ νκ²λλ©΄ λ€μκ³Ό κ°μ΄ μΆλ ₯λλ€.
λ€μκ³Ό κ°μ΄ 10,20μ΄ ν΄λμ€λ₯Ό μ μΈκ³Όν¨κ» μ΄κΈ°ν λλ€.
μμ±μμ νΉμ§
1. μμ±μμ λͺ©μ μ κ°μ²΄κ° μμ±λ λ νμν μ΄κΈ° μμ μ μν¨μ΄λ€.
μλ₯Ό λ€μ΄ λ©€λ² λ³μμ κ°μ νΉμ κ°μΌλ‘ μ€μ νκ±°λ, λ©λͺ¨λ¦¬λ₯Ό λμ ν λΉ λ°κ±°λ, νμΌμ μ΄κ±°λ, λ€νΈμν¬λ₯Ό μ°κ²°νλ λ± κ°μ²΄λ₯Ό μ¬μ©νκΈ° μ μ νμν μ‘°μΉλ₯Ό ν μ μλλ‘ νκΈ° μν¨μ΄λ€.
2. μμ±μ ν¨μλ μ€μ§ νλ²λ§ μ€νλλ€.
μμ±μ ν¨μλ κ° κ°μ²΄λ§λ€ κ°μ²΄κ° μμ±λλ μμ μ μ€μ§ ν λ²λ§ μλμΌλ‘ μ€νλλ€.
3. μμ±μ ν¨μμ μ΄λ¦μ ν΄λμ€ μ΄λ¦κ³Ό λμΌνκ² μμ±λμ΄μΌ νλ€.
μ΄λ‘ μΈν΄ μμ±μλ λ€λ₯Έ λ©€λ² ν¨μμ μ½κ² κ΅¬λΆ ν μ μλ€.
4. μμ±μ ν¨μμ μνμ λ¦¬ν΄ νμ μ μ μΈνμ§ μλλ€.
μμ±μλ ν¨μμ΄μ§λ§ λ¦¬ν΄ νμ μ μ μΈν΄μλ μλλ€. voidλ μλλ€!
5. μμ±μλ μ€λ³΅ κ°λ₯νλ€.
μ€λ³΅λ μμ±μ μ€ νλλ§ μ€νλλ€.
μλ©Έμ(Destructor)
π μλ©Έμ(Destructor)λ κ°μ²΄μ μλͺ μ΄ λλ¬μ λ κ°μ²΄λ₯Ό μ κ±°νκΈ° μν λͺ©μ μΌλ‘ μ¬μ©λλ€. κ°μ²΄μ μλͺ μ΄ λλ¬μ λ μλμΌλ‘ μ»΄νμΌλ¬κ° μλ©Έμ ν¨μλ₯Ό νΈμΆνλ€. ν΄λμ€λͺ κ³Ό λμΌνλ©° '~'κΈ°νΈλ₯Ό μ¬μ©νλ€.
μλ©Έμ κ³Όμ
κ°μ²΄μμ±μ λ°λμ νΈμΆλλ κ²μ΄ μμ±μλΌλ©΄, κ°μ²΄μλ©Έμ λ°λμ νΈμΆλλ κ²μ΄ μλ©Έμμ΄λ€.
μλ§μλ λ€μκ³Ό κ°μ νΉμ§μ κ°κ³ μλ€.
1) ν΄λμ€μ μ΄λ¦ μμ '~'κ° λΆμ ννμ μ΄λ¦μ κ°λλ€.
2) μμ±μμ κ°μ΄ λ°ννμ΄ μ μΈλμ΄ μμ§ μλλ€.
3) λ§€κ°λ³μλ voidνμΌλ‘ μ μΈλμ΄μΌ νκΈ° λλ¬Έμ μ€λ²λ‘λ©μ΄λ λν΄νΈ κ° μ€μ μ΄ λΆκ°λ₯νλ€.
κ°μ²΄ λ©€λ²λ‘μ¨λ name κ³Ό age κ° μλ€.
public μμμλ μμ±μλ₯Ό ν΅νμ¬ μ΄λ¦κ³Ό λμ΄λ₯Ό μ μΈκ³Ό λμμ μ΄κΈ°ν ν μ μλλ‘ νμ΅λλ€.
κ·Έλ¦¬κ³ λ°μ 보μλ©΄ ~Person() μ΄λΌλ μλ©Έμκ° μμ΅λλ€.
μ μ½λμμ 보μ΄λ κ²κ³Ό κ°μ΄ μλ©Έμλ₯Ό μ μνλ©΄ λ©λλ€.
κ·ΈλΌ ν λΉλ λ©λͺ¨λ¦¬κ° ν΄μ²΄κ° λ©λλ€.
μλ©Έμμ νΉμ§
1. μλ©Έμμ λͺ©μ μ κ°μ²΄κ° μ¬λΌμ§ λ νμν λ§λ¬΄λ¦¬ μμ μ μν¨μ΄λ€.
κ°μ²΄κ° μλ©Έν λ, λμ μΌλ‘ ν λΉλ°μ λ©λͺ¨λ¦¬λ₯Ό μ΄μ체μ μ λλ €μ£Όκ±°λ, μ΄μ΄λμ νμΌμ μ μ₯νκ³ λ«κ±°λ, μ°κ²°λ λ€νΈμν¬λ₯Ό ν΄μ νλ λ± κ°μ²΄κ° μ¬λΌμ§κΈ° μ μ νμν μ‘°μΉλ₯Ό νλλ‘ νκΈ° μν¨μ΄λ€.
2. μλ©Έμμ μ΄λ¦μ ν΄λμ€ μ΄λ¦ μμ ~λ₯Ό λΆμΈλ€.
Person::~Person() {...}
3. μλ©Έμλ λ¦¬ν΄ νμ μ΄ μμΌλ©° μ΄λ€ κ°λ 리ν΄ν΄μλ μλλ€.
μλ©Έμλ μμ±μμ κ°μ΄ λ¦¬ν΄ νμ μμ΄ μ μΈλλ©° μ΄λ€ κ°λ 리ν΄ν΄μλ μ λλ€.
4. μλ©Έμλ μ€μ§ ν κ°λ§ μ‘΄μ¬νμ¬ λ§€κ°λ³μλ₯Ό κ°μ§μ§ μλλ€.
μλ©Έμλ μμ±μμ λ¬λ¦¬ ν ν΄λμ€μ ν κ°λ§ μ‘΄μ¬νλ©° λ§€κ°λ³μλ₯Ό κ°μ§μ§ μλλ€.
5. μλ©Έμκ° μ μΈλμ΄ μμ§ μμΌλ©΄ κΈ°λ³Έ μλ©Έμ(default destructor)κ° μλμΌλ‘ μμ±λλ€.
μμ±μμ κ°μ΄ ν΄λμ€μ μ μΈνμ§ μμΌλ©΄ μλμΌλ‘ κΈ°λ³Έ μλ©Έμκ° μμ±λλ€.
μ΄λ κΈ°λ³Έ μλ©Έμλ μ무 μΌλ νμ§ μκ³ λ¨μ 리ν΄νλλ‘ λ§λ€μ΄μ§λ€.
μμ±μ/μλ©Έμ μ€ν μμ
μ§μ κ°μ²΄(local object) : ν¨μ λ΄μμ μ μΈλ κ°μ²΄
μ μ κ°μ²΄(global object) : ν¨μ λ°κΉ₯μ μ μΈλ κ°μ²΄

μ μ κ°μ²΄λ νλ‘κ·Έλ¨μ΄ λ‘λ©λ λ μμ±λμ΄ νλ‘κ·Έλ¨μ΄ μ’ λ£ν λ(mainν¨μ μ’ λ£μ) μλ©Έλκ³ ,
μ§μ κ°μ²΄λ κ·Έκ°μ²΄κ° ν¬ν¨λ ν¨μκ° νΈμΆλ λ μμ±λμ΄ ν¨μ μ’ λ£μμ λ°νλμ΄ μλ©Έλλ€.
μ μ κ°μ²΄λ μ§μ κ°μ²΄ λͺ¨λ μμ±λ μμμ λ°λμμΌλ‘ μλ©Έ λλ€. μ΄λ stackμ νΉμ±μ΄λ€.
'C++' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ³΅μ¬ μμ±μ(Copy Constructor), ν©ν 리 ν¨ν΄ (Factory Pattern) (0) | 2022.11.29 |
---|---|
κ°μν¨μ(virtual function), ν¨μ μ¬μ μ (function redefine) (0) | 2022.11.25 |
static μ μ λ³μ (0) | 2022.11.23 |
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming, OOP) (0) | 2022.11.16 |
μ€λ΅λ ΈνΈ (0) | 2022.11.11 |