Class
μΌλ°μ μΌλ‘ c++μ ν΄λμ€λ κ΅¬μ‘°μ²΄λ³΄λ€ λ ν¨κ³Όμ μΈ λ¬Έλ²μ΄λ€. ꡬ쑰체μ ν΄λμ€λ κ±°μ ν‘μ¬νκ² λμνμ§λ§, ν΄λμ€μμλ λ΄λΆμ μΌλ‘ ν¨μ λ±μ ν¬ν¨ν μ μλ€.
ν΄λμ€λ μμ κ°λ μ νλ‘κ·Έλλ°μμ κ·Έλλ‘ μ΄μ©ν μ μλ€λ μ μμ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μ κ°μ¦νλλ‘ ν΄μ£Όλ κΈ°λ³Έλ¨μμ΄λ€.
ꡬ쑰체
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νΉμ§
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ λ€μκ³Ό κ°μ νΉμ§λλ¬Έμ μμ€μ½λλ₯Ό λ³΄λ€ κ°κ²°νκ³ μμ°μ± λκ² λ§λ€μ΄μ€λ€.
μΆμν(Abstract)
μΊ‘μν(Encapsulation)
μμμ±(Inheritance)
μ 보 μλ(Data Hiding)
λ€νμ±(Polymorphism)
μλ°-κ°μ²΄μ§ν₯νλ‘κ·Έλλ°μμ λ μμΈν κ΄λ ¨ νΉμ§μ λ³Ό μ μλ€.
C++ ν΄λμ€λ₯Ό νμ©ν΄ λ§λ λ³μλ₯Ό instanceλΌκ³ νλ€.
κΈ°λ³Έμ μΌλ‘ νλμ ν΄λμ€μμ μμ±λ μΈμ€ν΄μ€λ μλ‘ λ
립λ λ©λͺ¨λ¦¬ μμμ λ©€λ² λ³μκ° μ μ₯λκ³ , κ΄λ¦¬λλ€. λ€λ§ λ©€λ² ν¨μλ λͺ¨λ μΈμ€ν΄μ€κ° 곡μ νλ€λ μ μμ, ν¨μ λ΄μμ μΈμ€ν΄μ€λ₯Ό ꡬλΆν νμκ° μλ€. c++ this
ν¬μΈν°λ ν¬μΈν° μλ£νμΌλ‘, μμλΌλ μ μμ κ°μ λ³κ²½ν μ μλ€.
μ κ·Ό νμ μ
public : ν΄λμ€, λ©€λ² λ±μ μΈλΆλ‘ 곡κ°νλ€. ν΄λΉ κ°μ²΄λ₯Ό μ¬μ©νλ μ΄λ€ κ³³μμλ μ κ·Όν μ μλ€.
private : ν΄λμ€, λ©€λ² λ±μ λ΄λΆμμλ§ νμ©νλ€. μΈλΆμμ ν΄λΉ κ°μ²΄μ μ κ·Όν μ μλ€.
ν΄λμ€λ κΈ°λ³Έ λ©€λ²λ₯Ό private ννλ‘ κ°μ£Όνλ€.(private:
λ₯Ό μ μΈνλ©΄ λ©€λ²λ μλμΌλ‘ private λ¬Έλ²μ λ°λ¦) λ°λλ‘ κ΅¬μ‘°μ²΄λ κΈ°λ³Έμ μΌλ‘ λ©€λ²λ₯Ό publicμΌλ‘ κ°μ£Όνλ€.
μμ±μ(Constructure)
μμ±μλ₯Ό μ΄μ©ν΄ κ°μ²΄λ₯Ό μμ±ν¨κ³Ό λμμ λ©€λ² λ³μλ₯Ό μ΄κΈ°νν μ μλ€. μμ±μλ νΉλ³ν λ©μλλ‘, ν΄λμ€μ μ΄λ¦κ³Ό λμΌν μ΄λ¦μ λ©μλλ‘ κ΅¬νλλ€. μμ±μλ λ°ν κ°μ΄ μμΌλ©°, μ¬λ¬λ² μ μλμ΄ λ€μν λ°©λ²μΌλ‘ κ°μ²΄λ₯Ό μ΄κΈ°νν μ μλ€.
c++μμλ λ³λλ‘ μμ±μλ₯Ό ꡬννμ§ μμΌλ©΄ κΈ°λ³Έ μμ±μ(Default Constructor)κ° μ¬μ©λλ€. κΈ°λ³Έ μμ±μλ 맀κ°λ³μλ₯Ό κ°μ§μ§ μμΌλ©°, λ©€λ² λ³μλ 0, NULLλ±μ κ°μΌλ‘ μ΄κΈ°ν λλ€.
Copy Constructor(λ³΅μ¬ μμ±μ)λ λ€λ₯Έ μΈμ€ν΄μ€μ μ°Έμ‘°λ₯Ό μΈμλ‘ λ°μ κ·Έ μ°Έμ‘°λ₯Ό μ΄μ©ν΄ μμ μ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°νν μ μλ€. Deep Copyλ₯Ό μ΄μ©ν΄ λ§λ€μ΄μ§ μΈμ€ν΄μ€λ κΈ°μ‘΄μ μΈμ€ν΄μ€μ λ€λ₯Έ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉλμ΄ λ 립μ μ΄λ€.
μμ 볡μ¬
λ€μκ³Ό κ°μ΄ μμ±μλ₯Ό νμ€λ‘ μ€μ¬μ μΈ μ μλ€.
κΉμ 볡μ¬
μλ©Έμ(Destructor)
μλ©Έμλ κ°μ²΄μ μλͺ μ΄ λλ¬μ λ κ°μ²΄λ₯Ό μ κ±°νκΈ° μν λͺ©μ μΌλ‘ μ¬μ©λλ€. κ°μ²΄μ μλͺ μ΄ λλ¬μ λ μλμΌλ‘ μ»΄νμΌλ¬κ° μλ©Έμ ν¨μλ₯Ό νΈμΆνλ€.
μλ©Έμλ ν΄λμ€μ μ΄λ¦κ³Ό λμΌνλ©° λ¬Όκ²° κΈ°νΈ(~
)λ₯Ό μ΄μ©ν΄ μ μν μ μλ€.
μμ(Inheritance)
μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ μμ±μ κ·Έλλ‘ λ¬Όλ € λ°μ μ¬μ©ν μ μλ€. μμμ νμ©ν΄ μμ€μ½λμ μ¬μ¬μ©μ±μ λ릴 μ μλ€. μμ ν΄λμ€λ νμ ν΄λμ€(Derived Class)λΌκ³ λ λΆλ¦¬λ©°, λΆλͺ¨ ν΄λμ€μ λͺ¨λ μμ±μ λ¬Όλ € λ°λλ€. :
μ νμ©ν΄ λΆλͺ¨ν΄λμ€μ μ°κ²°λ μ μλ€.
μμ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λ§λ€ λ κ°μ₯ λ¨Όμ λΆλͺ¨ ν΄λμ€μ μμ±μκ° νΈμΆλλ€. μμν΄λμ€μ μλͺ μ΄ λ€νμ λλ μμ ν΄λμ€μ μλ©Έμκ° λ¨Όμ νΈμΆλ νμ λΆλͺ¨ ν΄λμ€μ μλ©Έμκ° νΈμΆλλ€.
μ€λ²λΌμ΄λ©(Overriding)
λΆλͺ¨ ν΄λμ€μμ μ μλ ν¨μλ₯Ό 무μνκ³ , μμ ν΄λμ€μμ λμΌν μ΄λ¦μ ν¨μλ₯Ό μ¬μ μνλ λ¬Έλ². μ€λ²λΌμ΄λ©μ μ μ©ν ν¨μμ μνμ κΈ°μ‘΄μ ν¨μμ λμΌν 맀κ°λ³μλ₯Ό μ λ¬ λ°λλ€.
λ€μ€μμ(Multipple Inheritance)
μ¬λ¬κ°μ ν΄λμ€λ₯Ό μμλ°λ κ²μ΄λ€. λ€μ€μμμ μ§μνμ§λ§ λ§μ΄ μ¬μ©λμ§λ μλλ€.
μ¬λ¬ κ°μ λΆλͺ¨ ν΄λμ€μ λμΌν λ©€λ²κ° μ‘΄μ¬ν μ μλ€.
νλμ ν΄λμ€λ₯Ό μλμΉ μκ² μ¬λ¬ λ² μμλ°μ κ°λ₯μ±μ΄ μλ€.
μ€λ²λ‘λ©(Overloading)
λμΌν μ΄λ¦μ λ©€λ² ν¨μλ₯Ό λ€μν λ°©μμΌλ‘ νμ©νκΈ° μν΄μ μ€λ²λ‘λ©μ μ¬μ©ν μ μλ€.
ν¨μ μ€λ²λ‘λ©
μ°μ°μ μ€λ²λ‘λ©
κΈ°μ‘΄μ μ‘΄μ¬νλ μ°μ°μλ§ μ μν μ μλ€.
λ©€λ² μ°μ°μ(
.
), λ²μ μ§μ μ°μ°μ(::
) λ±μ λͺλͺ μ°μ°μλ μ€λ²λ‘λ© μ²λ¦¬ν μ μλ€.νΌμ°μ°μμ κ°μ κ·μΉ λ± κΈ°λ³Έμ μΈ μ°μ°μμ κ·μΉμ λ°λΌμΌνλ€.
μ€λ²λ‘λ©μ΄ λ μ°μ°μμ νΌμ°μ°μ μ€ νλλ μ¬μ©μ μ μ μλ£νμ΄μ΄μΌλ§ νλ€.
μΊ‘μν(Encapsulation)
μΊ‘μνλ κ΄λ ¨λ ν¨μμ λ©€λ²λ€μ λλλ‘ νλμ ν΄λμ€μμ κ΄λ¦¬νλ κ²μ΄λ€. λν, κ°μ΄ μ€νλμ΄μΌ νλ κΈ°λ₯λ€λ νλμ ν΄λμ€μ λ£μ΄μ μμ§λ κΈ°λ₯μ κ°μ§ μ μλλ‘ ν΄μΌνλ€.
c++μμλ κΈ°λ³Έμ μΌλ‘ λ©€λ² λ³μμ μ κ·ΌνκΈ° μν΄μλ public λ©€λ² ν¨μ(getter)λ₯Ό μ΄μ©ν΄μΌνλ€. λ€λ§ νΉμ ν κ°μ²΄μ λ©€λ² ν¨μκ° μλ κ²½μ°μλ private λ©€λ²μ μ κ·Όν΄μΌ ν λκ° μλ€. μ΄λ friend
ν€μλλ₯Ό μ΄μ©νλ©΄ νΉμ ν κ°μ²΄μ λͺ¨λ λ©€λ²μ μ κ·Όν μ μλ€.
Friend Class
λ ν΄λμ€κ° μλ‘ λ°μ ν μ°κ΄μ±μ΄ μμΌλ©°, μλλ°©μ privateμ μ κ·Όν΄μΌ νλ€λ©΄ ν΄λμ€ μ체λ₯Ό Friendλ‘ μ μΈν μ μλ€.
μ μ λ©€λ²
ν΄λμ€μ ν¬ν¨λμ΄μλ λ©€λ²μ΄μ§λ§ λͺ¨λ κ°μ²΄κ° 곡μ νλ λ©€λ²μ΄λ€. μ μ μΌλ‘ μ μΈλ λ©€λ²λ λ©λͺ¨λ¦¬ μμ μ€μ§ νλλ§ ν λΉλμ΄ κ΄λ¦¬λλ€. μ μ λ©€λ²λ₯Ό public μΌλ‘ μ μΈνλ©΄ μΈλΆμ μ΄λ ν ν΄λμ€μμλ μ κ·Όμ΄ κ°λ₯νλ©°, μ μ λ©€λ²λ μΌλ°μ μΌλ‘ μ±κΈν€ ν¨ν΄λ±μ λ€μν κΈ°λ₯μ μν΄ μ¬μ©λλ€.
μμ λ©€λ²(Constant Member)
νΈμΆλ κ°μ²΄μ λ°μ΄ν°λ₯Ό λ³κ²½ν μ μλ λ©€λ²
λ€νμ±(Polymorphism)
μ¬λ¬ κ°μ μλ‘ λ€λ₯Έ κ°μ²΄κ° λμΌν κΈ°λ₯μ μλ‘ λ€λ₯Έ λ°©λ²μΌλ‘ μ²λ¦¬ν μ μλ κΈ°λ₯μ μλ―Έ. μλ₯Ό λ€μ΄ κ²μμμ μΉΌ, λν¬, μ΄μ '곡격'μ΄λΌλ λμΌν κΈ°λ₯μ μνν μ μλ€.
μΆμν΄λμ€(Abstract Class)λ‘ λμΌν κΈ°λ₯μ ꡬννλ©΄ ν¨κ³Όμ μΌλ‘ μ€κ³ν μ μλ€.
C++ μ»΄νμΌλ¬λ ν¬μΈν° λ³μκ° κ°λ¦¬ν€κ³ μλ λ³μμ νμ μ κΈ°μ€μΌλ‘ ν¨μλ₯Ό νΈμΆνμ§ μκ³ , ν¬μΈν°μ νμ μ κΈ°μ€μΌλ‘ ν¨μλ₯Ό νΈμΆνλ€. μ¦, AλΌλ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ ν¬μΈν° λ³μλ Aκ°μ²΄μ λ©€λ² ν¨μλ§μ νΈμΆν μ μλ€.
pλΌλ ν¬μΈν°κ° Aκ°μ²΄μ νμ μ κ°λ¦¬ν€κΈ° λλ¬Έμ A classμ show()λ₯Ό νΈμΆνλ κ²μ λ³Ό μ μλ€. μ΄λ¬ν κ²μ μ μ λ°μΈλ©μ΄λΌκ³ νλ€.
λμ λ°μΈλ©(Dynamic Binding)
C++λ νΉμ ν ν¨μλ₯Ό νΈμΆν λ ν΄λΉ ν¨μμ 루ν΄μ΄ κΈ°λ‘λ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ°ΎμμΌνλ€. νΉμ ν ν¨μλ₯Ό νΈμΆνλ μμ€μ½λμμ μ€μ λ‘ ν¨μκ° μ μλ λ©λͺ¨λ¦¬ 곡κ°μ μ°ΎκΈ° μν΄μλ Binding κ³Όμ μ΄ νμνλ€.
μΌλ°μ μΌλ‘ ν¨μμ νΈμΆμ μ»΄νμΌ μκΈ°μ κ³ μ λ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ΄μ©νλ€. μ΄λ¬ν λ°©μμ μ μ λ°μΈλ©(Static Binding)μ΄λΌκ³ νλ€. μΌλ°μ μΈ λ©€λ² ν¨μλ λͺ¨λ μ΄λ¬ν μ μ λ°μΈλ©μ μ¬μ©νλ€.
λ€λ§ κ°μ ν¨μλ νλ‘κ·Έλ¨μ΄ μ€νλ λ κ°μ²΄λ₯Ό κ²°μ νλ μ μμ μ»΄νμΌ μκ°μ κ°μ²΄λ₯Ό νΉμ ν μ μλ€. κ°μν¨μλ μ€ν μκ° λ μ¬λ°λ₯Έ ν¨μκ° μ€νλ μ μλλ‘ λμ λ°μΈλ©μ μ¬μ©νλ€.
κ°μν¨μ
μ»΄νμΌλ¬λ κ°μ ν¨μ ν μ΄λΈ(Virtual Function Table)μ μ΄μ©ν΄ κ°μ ν¨μλ₯Ό λ€λ£¨κ² λλλ°, μ»΄νμΌλ¬λ κ°κ°μ κ°μ²΄λ§λ€ κ°μ ν¨μ ν μ΄λΈμ κ°λ¦¬ν€λ ν¬μΈν°λ₯Ό μ μ₯νκΈ° μν λ©€λ²λ₯Ό μ μ₯νλ€.
κ°μ ν¨μλ₯Ό νΈμΆνλ©΄ κ°μ ν¨μ ν μ΄λΈμ μ κ·Όνμ¬ μμ μ΄ νμν ν¨μμ μ£Όμλ₯Ό μ°Ύμ νΈμΆνκ² λλ€. μ΄λ¬ν κ³Όμ μ λμ λ°μΈλ©μ ν΅ν΄ μ΄λ£¨μ΄μ§λ―λ‘ μ»΄ν¨ν 리μμ€λ₯Ό μλͺ¨νκ²λλ€.
μ¦, μμ ν΄λμ€κ° μ¬μ μν κ°λ₯μ±μ΄ μλ λ©€λ² ν¨μλ€μ κ°μ ν¨μλ‘ μ μΈνλ κ²μ΄ μ’λ€.
κ°μ ν΄λμ€μ μλ©Έμ
μμ κ΄κ³κ° μμΌλ©΄μ, λμμ λ©λͺ¨λ¦¬ ν΄μ λ₯Ό ν΄μΌνλ κ²½μ°μλ λΆλͺ¨ ν΄λμ€μ μλ©Έμλ₯Ό κ°μν¨μλ‘ μ μΈν΄μΌνλ€. λΆλͺ¨ ν¬μΈν°λ‘ κ°μ²΄λ₯Ό μμ νλ©΄ λΆλͺ¨ ν΄λμ€μ μλ©Έμκ° νΈμΆλκΈ° λλ¬Έμ΄λ€.
μμ κ°μ ν¨μ(Pure Virtual Function) : μμ ν΄λμ€μμ λ°λμ μ¬μ μλ₯Ό ν΄μ£Όμ΄μΌνλ ν¨μμ΄λ€. μΌλ°μ μΌλ‘ μμ κ°μ ν¨μλ λΆλͺ¨ ν΄λμ€μμ ν¨μ λμμ μ μνμ§ μμΌλ©°, μμ ν΄λμ€μμ λ°λμ μ μν΄μΌ μ¬μ©ν μ μλ€.
=0
ν€μλλ₯Ό λΆμ¬μ μ μΈν μ μλ€.
μΆμν΄λμ€
μ¦, μΆμν΄λμ€λ νλ μ΄μμ μμ κ°μ ν¨μλ₯Ό ν¬ν¨νλ ν΄λμ€λ₯Ό μλ―Ένλ€. μμ ν΄λμ€λ μΆμ ν΄λμ€λ₯Ό μμ λ°μ μ΄νμ λ°λμ μμ κ°μ ν¨μλ₯Ό λͺ¨λ μ€λ²λΌμ΄λ© ν΄μΌ λΉλ‘μ ν΄λΉ κ°μ²΄λ₯Ό μ¬μ©ν μ μλ€.
ν
νλ¦Ώ
Templateμ μ΄μ©νμ¬ Generic Programmingμ μ¬μ©ν μ μλ€.
generic programmingμ λ°μ΄ν° νμμ μμ‘΄νμ§ μκ³ , νλμ κ°μ΄ μ¬λ¬ λ€λ₯Έ λ°μ΄ν° νμ λ€μ κ°μ§ μ μλ κΈ°μ μ μ€μ μ λμ΄ μ¬μ¬μ©μ±μ λμΌ μ μλ νλ‘κ·Έλλ° λ°©μ
Templateμ 맀κ°λ³μμ νμ μ λ°λΌμ ν¨μ λ° ν΄λμ€λ₯Ό μμ½κ² μ¬μ©ν μ μλλ‘ ν΄μ€λ€. Templateμ μ¬μ©νλ©΄ νμ λ§λ€ λ³λμ ν¨μλ ν΄λμ€λ₯Ό λ§λ€μ§ μκ³ , λ€μν νμ μμ λμν μ μλ λ¨ νλμ κ°μ²΄λ₯Ό μ μν μ μλ€.
ν¨μ ν
νλ¦Ώ(Function Template)
Function Templateμ κ°κ°μ μλ£νμ λν΄ μ²μμΌλ‘ νΈμΆλ λ, c++ μ»΄νμΌλ¬λ ν΄λΉ νμ μ μΈμ€ν΄μ€λ₯Ό μμ±νκ² λλ€. (string typeμ΄ λ€μ΄μ€λ©΄ string typeμ ν¨μ μΈμ€ν΄μ€λ₯Ό μμ±)
λͺ μμ νΉμν(Explicit Specialization)
ν¨μ ν νλ¦Ώμ νΉμ ν νμ μ λν΄ λͺ μμ νΉμν κΈ°λ₯μ μ 곡νλ€. μ΄λ¬ν λͺ μμ νΉμνλ₯Ό μ΄μ©νλ©΄, νΉμ ν νμ μ λν΄μ νΉμν κΈ°λ₯μ μ μν μ μλ€. μ»΄νμΌλ¬λ νΈμΆλ ν¨μμ λμνλ νΉμνλ μ μλ₯Ό λ°κ²¬ν μ΄νμλ ν΄λΉ μ μλ§μ μ¬μ©νλ€. (ν¨κ³Όμ μΌλ‘ λ©λͺ¨λ¦¬λ₯Ό μ΄μ©)
ν΄λμ€ ν
νλ¦Ώ
ν΄λμ€λ₯Ό μΌλ°ννκΈ° μν΄μ Class Templateμ μ¬μ©ν μ μλ€. Class Templateμ μ¬μ©νλ©΄ μλ£νμ λ°λΌμ λ€λ₯΄κ² λμνλ ν΄λμ€ μ§ν©μ λ§λ€ μ μλ€.
default template arguments
Smart Pointer
ν μμμ λμ ν λΉ(new
)λ λ©λͺ¨λ¦¬λ₯Ό ν΄μ νκΈ° μν΄μλ delete
ν€μλλ₯Ό μ¬μ©νλλ°, λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν΄μ£Όμ§ μμΌλ©΄ ν 곡κ°μ κ³μν΄μ μ‘΄μ¬νκΈ° λλ¬Έμ λ©λͺ¨λ¦¬ λμ(Memory Leak)κ° λ°μν μ μλ€. μ΄λ₯Ό λ°©μ§νκΈ°μν μλ¨μΌλ‘ ν¬μΈν°μ²λΌ λμνλ class templateμΈ μ€λ§νΈ ν¬μΈν°(Smart Pointer)λ₯Ό μ¬μ©ν μ μλ€. μ€λ§νΈ ν¬μΈν°λ₯Ό μ΄μ©νλ©΄ λ©λͺ¨λ¦¬ λμλ₯Ό λ ν¨κ³Όμ μΌλ‘ λ°©μ§ν μ μμ΄ μ»΄ν¨ν° μμ€ν
μ μμ μ±μ λμΌ μ μλ€.
Java, C#, python λ±λ±μμλ garbage collectorκ° μ°μ΄μ§ μλ κ°μ²΄λ€μ μκ±°νλ μν μ νλ€.
κΈ°λ³Έμ μΌλ‘λ new
ν€μλλ‘ νΉμ ν λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κ°λ¦¬ν€λλ‘ μ΄κΈ°ν ν ν μ€λ§νΈ ν¬μΈν°μ ν΄λΉ ν¬μΈν°λ₯Ό λ£μ΄μ μ¬μ©ν μ μλ€. μ€λ§νΈ ν¬μΈν°λ μλͺ
μ λ€νμ λ delete
ν€μλλ₯Ό μ΄μ©ν΄ ν λΉλ λ©λͺ¨λ¦¬λ€μ μλμΌλ‘ ν΄μ νλ κΈ°λ₯μ μννλ€.
unique_ptr : νλμ μ€λ§νΈ ν¬μΈν°κ° νΉμ ν κ°μ²΄λ₯Ό μ²λ¦¬ν μ μλλ‘ νλ€. νΉμ ν κ°μ²΄μ μμ κΆμ κ°μ§κ³ μμλλ§ μλ©Έμκ° κ°μ²΄λ₯Ό μμ ν μ μλ€.
shared_ptr : νΉμ ν κ°μ²΄λ₯Ό μ°Έμ‘°νλ μ€λ§νΈ ν¬μΈν°κ° μ΄ λͺκ°μΈμ§λ₯Ό μ°Έμ‘°, νΉμ ν κ°μ²΄λ₯Ό μλ‘μ΄ μ€λ§νΈ ν¬μΈν°κ° μ°Έμ‘°ν λλ§λ€ μ°Έμ‘° νμ(Reference Count)κ° 1μ© μ¦κ°, κ° μ€λ§νΈ ν¬μΈν°μ μλͺ μ΄ λ€ν λλ§λ€ 1μ© κ°μνλ€. κ²°κ³Όμ μΌλ‘ μ°Έμ‘° νμκ° 0μ΄ λλ©΄ deleteν€μλλ₯Ό μ΄μ©ν΄ λ©λͺ¨λ¦¬μμ λ°μ΄ν°λ₯Ό μλμΌλ‘ ν λΉ ν΄μ νλ€.
weak_ptr : νλ μ΄μμ shared_ptr μΈμ€ν΄μ€κ° μμ νλ κ°μ²΄μ λν μ κ·Όν μ μλ€. νμ§λ§ ν΄λΉ κ°μ²΄μ μμ μμ μμλ ν¬ν¨λμ§ μλλ€.
Last updated
Was this helpful?