hugDog
Android DevLog
hugDog
전체 방문자
였늘
μ–΄μ œ
  • πŸ™Œ Hello? (162)
    • πŸ§©μ•ˆλ“œλ‘œμ΄λ“œ (12)
      • κ°œλ… 정리 (5)
      • 버그 ν•΄κ²° (4)
      • 기타 (3)
    • πŸ”μ•Œκ³ λ¦¬μ¦˜ (54)
      • κ°œλ… (0)
      • λ°±μ€€ (48)
      • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ (6)
    • πŸ“„κ°œλ°œ 일지 (0)
      • FINPO (0)
    • πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ (71)
      • C++ 정리 (49)
      • C++κΈ°μ΄ˆν”ŒλŸ¬μŠ€ μ—°μŠ΅λ¬Έμ œ (20)
      • Kotlin (2)
    • ⭐Project (1)
    • 🚴TIL (13)
      • Clean Code (13)
    • πŸš©κΈ°νƒ€ (9)
      • λͺ©ν‘œ (6)
      • 일상 (3)
      • λ¬Έμ„œ (0)

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
hugDog

Android DevLog

πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ 정리

C++ 정리 - 37 (λŒ€μž… μ—°μ‚°μž κ΄€λ ¨ 사항, private 멀버와 protected 멀버, 가상 λ©”μ„œλ“œ, ν”„λ Œλ“œ κ΄€λ ¨ 사항, 기초 클래슀 λ©”μ„œλ“œμ˜ μ‚¬μš©)

2020. 11. 19. 20:25
728x90

-λŒ€μž… μ—°μ‚°μž κ΄€λ ¨ 사항

λŒ€μž… μ—°μ‚°μžμ˜ μ•”μ‹œμ  λ””ν΄νŠΈ 버전은 멀버별 λŒ€μž…μ„ μ‚¬μš©ν•œλ‹€. 멀버별 λŒ€μž…μ€ 타깃 객체의 각 멀버에 μ†ŒμŠ€ 객체의 ν•΄λ‹Ήν•˜λŠ” λ©€λ²„μ˜ 값이 λŒ€μž…λœλ‹€. 객체가 νŒŒμƒ ν΄λž˜μŠ€μ— μ†ν•œλ‹€λ©΄, μ»΄νŒŒμΌλŸ¬λŠ” 기초 클래슀 λŒ€μž… μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ—¬ νŒŒμƒ 클래슀 객체의 기초 클래슀 뢀뢄에 λŒ€ν•œ λŒ€μž…μ„ μ²˜λ¦¬ν•œλ‹€.

 

클래슀 μƒμ„±μžκ°€ newλ₯Ό μ‚¬μš©ν•˜μ—¬ 포인터λ₯Ό μ΄ˆκΈ°ν™”ν•˜κ³  μžˆλ‹€λ©΄, λͺ…μ‹œμ  λŒ€μž… μ—°μ‚°μžλ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€. c++λŠ” νŒŒμƒ 클래슀 객체의 기초 뢀뢄을 μœ„ν•΄ 기초 클래슀 λŒ€μž… μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—, νŠΉλ³„ν•œ 주의λ₯Ό μš”ν•˜λŠ” 데이터 멀버λ₯Ό μΆ”κ°€ν•˜μ§€ μ•ŠλŠ” ν•œ, νŒŒμƒ 클래슀λ₯Ό μœ„ν•΄ λŒ€μž… μ—°μ‚°μžλ₯Ό λ‹€μ‹œ μ •μ˜ν•  ν•„μš”λŠ” μ—†λ‹€.

 

νŒŒμƒ ν΄λž˜μŠ€κ°€ newλ₯Ό μ‚¬μš©ν•˜κ³  있고, λͺ…μ‹œμ  λŒ€μž… μ—°μ‚°μžλ₯Ό μ œκ³΅ν•΄μ•Ό ν•  λ•Œ, λŒ€μž… μ—°μ‚°μžλŠ” μƒˆλ‘œμš΄ λ©€λ²„λ§Œ μ œκ³΅ν•˜λŠ” 것이 μ•„λ‹ˆλΌ κ·Έ 클래슀의 λͺ¨λ“  멀버듀을 μ œκ³΅ν•΄μ•Ό ν•œλ‹€.

hasDMA &hasDMA::operator=(const hasDMA &hs)
{
	if(this==&hs)
    	return *this;
    baseDMA::operator=(hs); //기초 클래슀 λΆ€λΆ„ 볡사
    delete[] style;
    style = new char ...
    ...
    return *this;
}

 

νŒŒμƒ 클래슀 객체λ₯Ό 기초 클래슀 객체에 λŒ€μž…ν•  경우, λŒ€μž… ꡬ문은 μ™Όμͺ½μ— μžˆλŠ” 객체에 μ˜ν•΄ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œλ‘œ λ²ˆμ—­λœλ‹€. νŒŒμƒ 클래슀 객체λ₯Ό 기초 클래슀 객체에 λŒ€μž…ν•  수 μžˆμœΌλ‚˜, 기초 클래슀 λ©€λ²„λ“€λ§Œ λŒ€μž…μ΄ 이루어진닀.

 

κ·Έ λ°˜λŒ€μ˜ 경우, νŒŒμƒ 클래슀 μ°Έμ‘°λŠ” 기초 클래슀 객체λ₯Ό μžλ™μœΌλ‘œ μ°Έμ‘°ν•  수 μ—†κΈ° λ•Œλ¬Έμ— λ³€ν™˜ μƒμ„±μžκ°€ μ—†λ‹€λ©΄ λΆˆκ°€λŠ₯ν•˜λ‹€. λ³€ν™˜ μƒμ„±μžκ°€ μ‘΄μž¬ν•˜λ©΄, ν”„λ‘œκ·Έλž¨μ€ 이 μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μž„μ‹œμ μΈ 객체λ₯Ό μƒμ„±ν•˜κ³  κ·Έ μž„μ‹œ 객체λ₯Ό λŒ€μž… μ—°μ‚°μžμ— λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•œλ‹€.

 

λ‹€λ₯Έ λ°©λ„λ‘œ, 기초 클래슀λ₯Ό νŒŒμƒ ν΄λž˜μŠ€μ— λŒ€μž…ν•˜κΈ° μœ„ν•œ λŒ€μž… μ—°μ‚°μžλ₯Ό μ •μ˜ν•  μˆ˜λ„ μžˆλ‹€.

 

-private 멀버와 protected 멀버

protected λ©€λ²„λŠ” νŒŒμƒ ν΄λž˜μŠ€μ— λŒ€ν•΄ public 멀버와 같은 역할을 ν•˜μ§€λ§Œ, λ°”κΉ₯세상에 λŒ€ν•΄μ„œλŠ” private λ©€λ²„μ²˜λŸΌ ν–‰λ™ν•œλ‹€. νŒŒμƒ ν΄λž˜μŠ€λŠ” 기초 클래슀의 protected 멀버에 직접 μ ‘κ·Όν•  수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ 기초 클래슀 멀버 ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œλ§Œ private 멀버에 μ ‘κ·Όν•  수 μžˆλ‹€.

 

-가상 λ©”μ„œλ“œ

기초 클래슀λ₯Ό 섀계할 λ•Œ, 클래슀 λ©”μ„œλ“œλ“€μ„ κ°€μƒμœΌλ‘œ λ§Œλ“€ 것인지 κ²°μ •ν•΄μ•Ό ν•œλ‹€. νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ λ©”μ„œλ“œλ₯Ό λ‹€μ‹œ μ •μ˜ν•˜λ €λ©΄, 기초 ν΄λž˜μŠ€μ—μ„œ κ·Έ λ©”μ„œλ“œλ₯Ό κ°€μƒμœΌλ‘œ μ •μ˜ν•˜λΌ.

 

-ν”„λ Œλ“œ κ΄€λ ¨ 사항

ν”„λ Œλ“œ ν•¨μˆ˜λŠ” 클래슀 멀버가 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μƒμ†λ˜μ§€ μ•ŠλŠ”λ‹€. κ·ΈλŸ¬λ‚˜, νŒŒμƒ 클래슀의 ν”„λ Œλ“œλ₯Ό 기초 클래슀의 ν”„λ Œλ“œλ‘œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

 

νŒŒμƒ 클래슀 μ°Έμ‘°λ‚˜ 포인터λ₯Ό 기초 ν΄λž˜μŠ€μ—μ„œ 그에 λŒ€μ‘ν•˜λŠ” κ²ƒμœΌλ‘œ λ°μ΄ν„°ν˜• 캐슀트λ₯Ό μ‹€μ‹œν•˜κ³ , κ·Έ λ°μ΄ν„°ν˜• 캐슀트 μ°Έμ‘°λ‚˜ 포인터λ₯Ό μ‚¬μš©ν•˜μ—¬ 기초 클래슀 ν”„λ Œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” 것이닀.

 

ostream &operator<<(ostream &os,const hasDMA &hs)
{
	os<<(const baseDMA &)hs;
    //operator<<(ostream &,const baseDMA &)λ₯Ό μœ„ν•΄ λ°μ΄ν„°ν˜• 캐슀트
    ...
}

 

-기초 클래슀 λ©”μ„œλ“œμ˜ μ‚¬μš©

  • νŒŒμƒ 클래슀 κ°μ²΄λŠ”, κ·Έ νŒŒμƒ ν΄λž˜μŠ€κ°€ λ©”μ„œλ“œλ“€μ„ λ‹€μ‹œ μ •μ˜ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, μƒμ†λœ 기초 클래슀 λ©”μ„œλ“œλ“€μ„ μžλ™μœΌλ‘œ μ‚¬μš©
  • νŒŒμƒ 클래슀 νŒŒκ΄΄μžλŠ” 기초 클래슀 μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ 호좜
  • νŒŒμƒ 클래슀 μƒμ„±μžλŠ” 멀버 초기자 λ¦¬μŠ€νŠΈμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό μ§€μ •ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, 기초 클래슀 λ””ν΄νŠΈ μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ 호좜
  • νŒŒμƒ 클래슀 μƒμ„±μžλŠ” 멀버 초기자 λ¦¬μŠ€νŠΈμ— μ§€μ •λœ 기초 클래슀 μƒμ„±μžλ₯Ό λͺ…μ‹œμ μœΌλ‘œ 호좜
  • νŒŒμƒ 클래슀 λ©”μ„œλ“œλ“€μ€ publicκ³Ό protected 기초 클래슀 λ©”μ„œλ“œλ“€μ„ ν˜ΈμΆœν•˜κΈ° μœ„ν•΄ μ‚¬μš© λ²”μœ„ κ²°μ • μ—°μ‚°μž μ‚¬μš© κ°€λŠ₯
  • νŒŒμƒ 클래슀의 ν”„λ Œλ“œλŠ”, νŒŒμƒ 클래슀 μ°Έμ‘°λ‚˜ 포인터λ₯Ό 기초 클래슀 μ°Έμ‘°λ‚˜ ν¬μΈν„°λ‘œ λ°μ΄ν„°ν˜• 캐슀트λ₯Ό μ‹€μ‹œν•˜κ³ , κ·Έλ ‡κ²Œ λ³€ν™˜λœ μ°Έμ‘°λ‚˜ 포인터λ₯Ό μ‚¬μš©ν•˜μ—¬ 기초 클래슀의 ν”„λ Œλ“œλ₯Ό 호좜 κ°€λŠ₯
728x90
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ (μƒˆμ°½μ—΄λ¦Ό)
    'πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ 정리' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • C++ 정리 - 39 (using을 μ‚¬μš©ν•˜μ—¬ μ ‘κ·Ό λ‹€μ‹œ μ •μ˜ν•˜κΈ°, 닀쀑 상속, 가상 기초 ν΄λž˜μŠ€μ™€ 가상이 μ•„λ‹Œ 기초 클래슀의 ν˜Όν•©, 가상 기초 ν΄λž˜μŠ€μ™€ 기초 μš°μœ„)
    • C++ 정리 - 38 (valarray 클래슀: 훑어보기, μ΄ˆκΈ°ν™” μˆœμ„œ, private 상속, 기초 클래슀 λ©”μ„œλ“œμ— μ ‘κ·Όν•˜κΈ°, 기초 클래슀 객체에 μ ‘κ·Όν•˜κΈ°, 기초 클래슀 ν”„λ Œλ“œμ— μ ‘κ·Όν•˜κΈ°, μ»¨ν…ŒμΈλ¨ΌνŠΈμ™€ private 상속)
    • C++ 정리 - 36 (클래슀 섀계 볡슡, 클래슀 λ©”μ„œλ“œμ— κ΄€λ ¨λœ κ·Έ λ°–μ˜ κ³ λ € 사항, 객체 리턴과 μ°Έμ‘° 리턴, public 상속에 κ΄€λ ¨λœ κ·Έ λ°–μ˜ 고렀사항)
    • C++ 정리 - 35 (상속: is-a 관계, public λ‹€ν˜• 상속, 가상 λ©”μ„œλ“œλŠ” μ™œ ν•„μš”ν• κΉŒ?, 정적 κ²°ν•©κ³Ό 동적 κ²°ν•©, 포인터와 μ°Έμ‘°ν˜•μ˜ ν˜Έν™˜, 가상 멀버 ν•¨μˆ˜μ™€ 동적 κ²°ν•©, μ ‘κ·Όμ œμ–΄: protected, ABC μ² ν•™, 상속과 ..
    hugDog
    hugDog
    μ•ˆλ“œλ‘œμ΄λ“œ 곡뢀 쀑인 ν•™μƒμž…λ‹ˆλ‹€!

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”