c & c++

[C++] 클래슀, μ ‘κ·Ό μ œμ–΄μž, this

쑰밈밍 2022. 9. 20. 15:51

πŸ’‘ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 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. μ–Έμ œλ‚˜ 포인터 μƒμˆ˜μ΄λ©°, 값을 μž¬ν• λ‹Ή ν•  수 μ—†λ‹€.