[C++] ν΄λμ€, μ κ·Ό μ μ΄μ, this
π‘ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° OOP
: λͺ¨λ λ°μ΄ν°λ₯Ό κ°μ²΄(object) μ·¨κΈ
: κ°μ²΄μ μν(state)μ νλ(behavior)μ ꡬ체ννλ ννμ νλ‘κ·Έλλ°
1. μΆμν
2. μΊ‘μν
3. μ 보 μλ
4. μμμ±
5. λ€νμ±
π‘ μΈμ€ν΄μ€ instance
: μ μΈλ ν΄λΉ ν΄λμ€ νμ μ κ°μ²΄ == λ©λͺ¨λ¦¬μ λμ λ κ°μ²΄
: νλμ ν΄λμ€ -> μ¬λ¬ κ°μ μΈμ€ν΄μ€ μμ±
: λ 립λ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ μμ λ§μ λ©€λ²λ³μ κ°μ§, λ©€λ² ν¨μλ λͺ¨λ μΈμ€ν΄μ€κ° 곡μ
: μλ‘μ΄ κ°μ±λ₯Ό μλ―Έ
β μλ‘μ΄ κ°μ±λ₯Ό λ§λλ μμ => μΈμ€ν΄μ€ν
π‘ ν΄λμ€ class
: ν΄λμ€λ₯Ό μ¬μ©νκΈ° μν΄μλ μ°μ ν΄λΉ ν΄λμ€ νμ μ κ°μ²΄λ₯Ό μ μΈν΄μΌνλ€.
class Man
{
private: // μ κ·Ό μ μ΄ μ§μμ, μλ΅κ°λ₯
int age; // λ©€λ² λ³μ
double height;
public: // privateλ§ μλ΅ κ°λ₯ λλ¨Έμ§λ λΆκ°λ₯
int plus(); // λ©€λ² ν¨μ
};
Man a; // aκ°μ²΄ μ μΈ
β μ κ·Ό μ μ΄ μ§μμ : μ 보 μλμ μν ν€μλ
public : λͺ¨λ μμμμ κ°μ²΄μ μ κ·Ό κ°λ₯
private : ν΄λΉ κ°μ²΄λ΄μ λ©€λ² λ³μλ λ©€λ² ν¨μλ§ μ κ·Ό κ°λ₯
π‘ ν΄λμ€ λ©€λ² ν¨μ
: λ²μ μ§μ μ°μ°μ(::) μ΄μ©ν΄ ν΄λΉ ν¨μκ° μ΄λ€ ν΄λμ€μ μνλμ§ λͺ μ
void Man::Move(int page)
{
current_page_ = page;
}
// 맀κ°λ³μX -> κ°μ²΄λͺ
.ν¨μλͺ
()
a.Move(30); // λ©€λ² ν¨μ νΈμΆ
π‘ μ 보 μλ
: μ¬μ©μκ° κ΅³μ΄ μ νμκ° μλ μ 보λ μ¬μ©μλ‘λΆν° μ¨κ²¨μΌ νλ€
π‘ μ κ·Ό μ μ΄
1. public : νλ‘κ·Έλ¨ μ΄λμμλ μ§μ μ κ·Ό κ°λ₯
2. private : μΈλΆμ 곡κ°X, μΈλΆμμ μ§μ μ κ·ΌX
3. protected : νμ ν΄λμ€μ λν΄μλ public, μΈλΆμμλ private μ·¨κΈ
π‘ this ν¬μΈν°
: λͺ¨λ λ©€λ² ν¨μκ° μμ λ§μ this ν¬μΈν°λ₯Ό κ°μ§κ³ μλ€.
: ν΄λΉ λ©€λ² ν¨μλ₯Ό νΈμΆν κ°μ²΄λ₯Ό κ°λ¦¬ν€κ² λλ©°, νΈμΆλ λ©€λ² ν¨μμ μ¨μ μΈμλ‘ μ λ¬λλ€.
=> νΈμΆλ λ©€λ² ν¨μλ μμ μ νΈμΆν κ°μ²΄κ° 무μμΈμ§ μ ννκ² νμ νλ€.
1. ν΄λμ€, ꡬ쑰체 λλ μ΄κ±°μ²΄ νμ μ λΉμ μ λ©€λ² ν¨μμμλ§ μ¬μ©
2. μ μ (static) λ©€λ² ν¨μλ this ν¬μΈν°λ₯Ό κ°μ§μ§ μλλ€
3. μΈμ λ ν¬μΈν° μμμ΄λ©°, κ°μ μ¬ν λΉ ν μ μλ€.