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++ 정리 - 25 (ν•¨μˆ˜ ν…œν”Œλ¦Ώ,ν…œν”Œλ¦Ώμ˜ μ˜€λ²„λ‘œλ”©,ν…œν”Œλ¦Ώ μ œν•œ,λͺ…μ‹œμ  νŠΉμˆ˜ν™”,ꡬ체화와 νŠΉμˆ˜ν™”,μ˜€λ²„λ‘œλ”© 뢄석,μ •ν™•ν•œ λŒ€μ‘κ³Ό μ΅œμ„ μ˜ λŒ€μ‘)

2020. 4. 18. 18:17
728x90

ν•¨μˆ˜ ν…œν”Œλ¦Ώ

ν•¨μˆ˜ ν…œν”Œλ¦Ώμ€ ν•¨μˆ˜μ˜ μΌλ°˜ν™” μ„œμˆ μ΄λ‹€. 즉, ν•¨μˆ˜ ν…œν”Œλ¦Ώμ€ int ν˜•μ΄λ‚˜ double ν˜•κ³Ό 같은 ꡬ체적인 λ°μ΄ν„°ν˜•μ„ 포괄할 수 μžˆλŠ” μΌλ°˜ν˜•μœΌλ‘œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•œλ‹€. ν…œν”Œλ¦Ώμ€ ꡬ체적인 λ°μ΄ν„°ν˜• λŒ€μ‹ , μΌλ°˜ν˜•μœΌλ‘œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜κ²Œ λ˜λ―€λ‘œ 이것을 μΌλ°˜ν™” ν”„λ‘œκ·Έλž˜λ°(generic programming)이라고 ν•œλ‹€. λ°μ΄ν„°ν˜•μ΄ λ§€κ°œλ³€μˆ˜μ— μ˜ν•΄ ν‘œν˜„λ˜λ―€λ‘œ, ν…œν”Œλ¦Ώμ„ λ•Œλ‘œλŠ” λ§€κ°œλ³€μˆ˜μ™€ λ°μ΄ν„°ν˜•(parameterized type)이라고 함.

 

μ‚¬μš© μ˜ˆμ‹œ

//ν•¨μˆ˜ ν…œν”Œλ¦Ώ μ›ν˜•

template <class Amy>

void Swap(Any &a, Any &b);

 

//ν•¨μˆ˜ ν…œν”Œλ¦Ώ μ •μ˜

template<class Any>

void Swap(Any &a,Any &b)

{

Any temp;

temp=a;

a=b;

b=temp;

}

 

ν…œν”Œλ¦Ώμ˜ μ˜€λ²„ λ‘œλ”©

일반적인 μ˜€λ²„ λ‘œλ”©κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ, ν…œν”Œλ¦Ώμ„ μ˜€λ²„ λ‘œλ”©ν•  λ•Œμ—λ„ ν™•μ‹€ν•˜κ²Œ κ΅¬λΆ„λ˜λŠ” ν•¨μˆ˜ μ‹œκ·Έλ‚΄μ²˜λ₯Ό μ‚¬μš©ν•΄μ•Ό 함

 

μ‚¬μš© μ˜ˆμ‹œ

template <typename T> //원본 ν…œν”Œλ¦Ώ

void Swap(T &a,T &b);

 

template<typename T> //μΆ”κ°€ ν…œν”Œλ¦Ώ

void Swap(T *a,T *b,int n);

...

template<typename T>

void Swap(T &a,T &b)

{

T temp;

temp = a;

a=b;

b=temp;

}

template<typename T>

void Swap(T a[],T b[],int n)

{

T temp;

...

}

 

ν…œν”Œλ¦Ώ μ œν•œ

λ‹€μŒκ³Ό 같은 ν…œν”Œλ¦Ώ ν•¨μˆ˜κ°€ μžˆλ‹€κ³  κ°€μ •

template <class T>

void f(T a,T b)

{...}

 

Tν˜•μ΄ built-in λ°°μ—΄ν˜•μΌ 경우

a=b; 와 같은 ꡬ문은 참이 μ•„λ‹ˆλ‹€.

 

λͺ…μ‹œμ  νŠΉμˆ˜ν™”

struct job

{

char name[40];

double salary;

int floor;

};

μ΄λŸ¬ν•œ ꡬ쑰체 두 개λ₯Ό λ§Œλ“  ν›„, 두 ꡬ쑰체의 λ‚΄μš©μ„ κ΅ν™˜ν•˜λ €κ³  ν•  λ•Œ 원본 ν…œν”Œλ¦Ώμ€ λ‹€μŒκ³Ό 같은 μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‚΄μš©μ„ κ΅ν™˜

temp=a;

a=b;

b=temp;

C++μ—μ„œλŠ” ν•˜λ‚˜μ˜ ꡬ쑰체λ₯Ό λ‹€λ₯Έ ν•˜λ‚˜μ˜ ꡬ쑰체에 λŒ€μž…ν•  수 있기 λ•Œλ¬Έμ—, Anyν˜•μ΄ job ꡬ쑰체인 κ²½μš°μ—λ„ μœ„μ˜ μ½”λ“œλŠ” 잘 λ™μž‘ν•¨. κ·ΈλŸ¬λ‚˜ salary와 floor λ©€λ²„λ§Œ κ΅ν™˜ν•˜κ³ , name λ©€λ²„λŠ” κ·ΈλŒ€λ‘œ 두고 μ‹Άλ‹€κ³  κ°€μ • -> λͺ…μ‹œμ  νŠΉμˆ˜ν™”(explicit specialization)λΌλŠ” νŠΉμˆ˜ν™”λœ ν•¨μˆ˜ μ •μ˜λ₯Ό, ν•„μš”ν•œ μ½”λ“œμ™€ ν•¨κ»˜ 제곡 κ°€λŠ₯

 

μ»΄νŒŒμΌλŸ¬κ°€ ν•¨μˆ˜ ν˜ΈμΆœμ— μ •ν™•νžˆ λŒ€μ‘ν•˜λŠ”  νŠΉμˆ˜ν™”λœ μ •μ˜λ₯Ό λ°œκ²¬ν•˜λ©΄, ν…œν”Œλ¦Ώμ„ μ°Ύμ§€ μ•Šκ³  κ·Έ μ •μ˜λ₯Ό μ‚¬μš©ν•¨. μ΄λŸ¬ν•œ νŠΉμˆ˜ν•œ ν˜•μ‹μ€ C++κ°€ λ°œμ „ν•˜λ©΄μ„œ 계속 λ³€ν™”ν•΄μ™”λ‹€.

 

3μ„ΈλŒ€ νŠΉμˆ˜ν™”(ISO/ANSI C++ ν‘œμ€€)

νŠΉμˆ˜ν™” 방식을 λͺ¨λ‘ μ‹€ν—˜ν•œ ν›„, C++98 ν‘œμ€€μ€ 이 방식을 λ‹€μŒκ³Ό 같이 정립함.

  • ν•¨μˆ˜ 이름이 ν•˜λ‚˜ μ£Όμ–΄μ§€λ©΄, μ‚¬μš©μžλŠ” ν…œν”Œλ¦Ώμ΄ μ•„λ‹Œ ν•¨μˆ˜, ν…œν”Œλ¦Ώ ν•¨μˆ˜, λͺ…μ‹œμ  νŠΉμˆ˜ν™” ν…œν”Œλ¦Ώ ν•¨μˆ˜λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€. λ˜ν•œ 이 λͺ¨λ“  κ²ƒλ“€μ˜ μ˜€λ²„ λ‘œλ”© 버전도 κ°€μ§ˆ 수 μžˆλ‹€.
  • λͺ…μ‹œμ  νŠΉμˆ˜ν™”λ₯Ό ν•˜κΈ° μœ„ν•œ μ›ν˜•κ³Ό μ •μ˜ μ•žμ— template <>κ°€ 와야 ν•œλ‹€. 그리고 κ·Έ νŠΉμˆ˜ν˜•μ˜ 이름을 μ„œμˆ ν•΄μ•Ό ν•œλ‹€.
  • νŠΉμˆ˜ν™”λŠ” ν…œν”Œλ¦Ώμ„ λ¬΄μ‹œν•˜κ³ , ν…œν”Œλ¦Ώμ΄ μ•„λ‹Œ ν•¨μˆ˜λŠ” νŠΉμˆ˜ν™”μ™€ ν…œν”Œλ¦Ώ λ‘˜ λ‹€ λ¬΄μ‹œ

λ‹€μŒμ€ jobν˜• ꡬ쑰체λ₯Ό κ΅ν™˜ν•˜λŠ” μ„Έ κ°€μ§€ ν˜•μ‹μ˜ ν•¨μˆ˜ μ›ν˜•

//ν…œν”Œλ¦Ώμ΄ μ•„λ‹Œ ν•¨μˆ˜ μ›ν˜•

void Swap(job &,job &);

//ν…œν”Œλ¦Ώ μ›ν˜•

template<typename T>

void Swap(T &,T &);

//jobν˜•μ„ μœ„ν•œ λͺ…μ‹œμ  νŠΉμˆ˜ν™”

template<> void Swap<job>(job &,job &);

->jobν˜•μ„ μœ„ν•œ νŠΉμˆ˜ν™”λΌλŠ” 것을 ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜μ˜ λ°μ΄ν„°ν˜•μ΄ μ•Œλ €μ£ΌκΈ° λ•Œλ¬Έμ—, Swap <job>에 μžˆλŠ” <job>은 μƒλž΅ κ°€λŠ₯

μ›ν˜•λ„ λ‹€μŒκ³Ό 같이 λ‹€μ‹œ μž‘μ„± κ°€λŠ₯

template<>void Swap(job &,job &); //더 간단함.

 

ꡬ체화와 νŠΉμˆ˜ν™”

μ»΄νŒŒμΌλŸ¬κ°€ νŠΉμ • λ°μ΄ν„°ν˜•μ— λ§žλŠ” ν•¨μˆ˜ μ •μ˜λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•  λ•Œ, κ·Έ κ²°κ³Όλ₯Ό ν…œν”Œλ¦Ώμ˜ ꡬ체화라 ν•œλ‹€.

 

template<typename T>

void Swap(T &a,T &b);

...

int main()

{

...

Swap(i,j); //i,jλŠ” intν˜•

}

Swap(i,j) ν•¨μˆ˜ ν˜ΈμΆœμ€, μ»΄νŒŒμΌλŸ¬κ°€ intν˜•μ„ μ‚¬μš©ν•˜λŠ” Swap()을 κ΅¬μ²΄ν™”ν•˜κ²Œ λ§Œλ“ λ‹€.

ν…œν”Œλ¦Ώμ€ ν•¨μˆ˜ μ •μ˜κ°€ μ•„λ‹ˆλΌ intν˜•μ„ μ‚¬μš©ν•˜λŠ” νŠΉμ • ꡬ체화가 ν•¨μˆ˜ μ •μ˜μ΄λ‹€. μ΄λŸ¬ν•œ λ°©μ‹μ˜ ꡬ체화λ₯Ό μ•”μ‹œμ  ꡬ체화라 함.

 

λͺ…μ‹œμ  ꡬ체화 문법

<> ν‘œκΈ°λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°ν˜•μ„ λ‚˜νƒ€λ‚΄κ³ , μ„ μ–Έ μ•žμ— template을 μ‚¬μš©

template void Swap<int> (int,int); //λͺ…μ‹œμ  ꡬ체화

->Swap() ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•˜μ—¬ int ν˜•μ— λ§žλŠ” ν•¨μˆ˜ μ •μ˜λ₯Ό μƒμ„±ν•˜λΌ.

 

λͺ…μ‹œμ  ꡬ체화λ₯Ό λͺ…μ‹œμ  νŠΉμˆ˜ν™”μ™€ μ„œλ‘œ λΉ„κ΅ν•΄λ³΄μž.

λͺ…μ‹œμ  νŠΉμˆ˜ν™”λŠ” λ™λ“±ν•œ λ‹€μŒ 두 μ„ μ–Έ μ€‘μ—μ„œ ν•œ 개λ₯Ό μ‚¬μš©ν•¨.

template<>void Swap<int>(int &,int &);

template<>void Swap(int &,int &);

->ν•¨μˆ˜ μ •μ˜λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ Swap() ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•˜μ§€ 말고, intν˜•μ— 맞게 νŠΉλ³„νžˆ λͺ…μ‹œμ μœΌλ‘œ μ •μ˜λœ ν•¨μˆ˜ μ •μ˜λ₯Ό μ‚¬μš©. λͺ…μ‹œμ  νŠΉμˆ˜ν™” 선언은 ν‚€μ›Œλ“œ template 뒀에 <>λ₯Ό κ°€μ§€λŠ” 반면, λͺ…μ‹œμ  κ΅¬μ²΄ν™”λŠ” <>λ₯Ό μƒλž΅

 

μ•”μ‹œμ  ꡬ체화, λͺ…μ‹œμ  ꡬ체화,λͺ…μ‹œμ  νŠΉμˆ˜ν™”λ₯Ό λͺ¨λ‘ νŠΉμˆ˜ν™”λΌκ³  ν•œλ‹€. μ΄λ“€μ˜ 곡톡점은 λͺ¨λ‘ ꡬ체적인 λ°μ΄ν„°ν˜•μ„ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜ μ •μ˜λ₯Ό λ‚˜νƒ€λ‚Έλ‹€λŠ” 것이닀.

 

μ˜€λ²„ λ‘œλ”© 뢄석

  1. 후보 ν•¨μˆ˜λ“€μ˜ λͺ©λ‘μ„ λ§Œλ“ λ‹€
  2. 맀개 λ³€μˆ˜μ˜ κ°œμˆ˜κ°€ μΌμΉ˜ν•˜λŠ” ν•¨μˆ˜λ“€μ˜ λͺ©λ‘μ„ λ§Œλ“ λ‹€
  3. κ°€μž₯ μ λ‹Ήν•œ ν•¨μˆ˜κ°€ μžˆλŠ”μ§€ νŒλ‹¨

may('B'); //μ‹€μ œ λ§€κ°œλ³€μˆ˜κ°€ char ν˜•

 

void may(int); //#1

float may(float,float=3);//#2

void may(char); //#3

char *may(const char *);//#4

char may(const char &);//#5

template<class T> void may(const T &);//#6

template<class T> void may(T *); //#7

 

#4와 #7은 μ •μˆ˜ν˜•μ΄ ν¬μΈν„°ν˜•μœΌλ‘œ λ³€ν™˜λ  수 μ—†μœΌλ―€λ‘œ νƒˆλ½

 

μ»΄νŒŒμΌλŸ¬λŠ” 살아남은 λ‹€μ„― 개 ν•¨μˆ˜ μ€‘μ—μ„œ μ΅œμ„ μ˜ 것을 골라야 함.

살아남은 후보 ν•¨μˆ˜λ“€μ˜ ν˜•μ‹ λ§€κ°œλ³€μˆ˜μ— μ‹€μ œ λ§€κ°œλ³€μˆ˜λ₯Ό λŒ€μ‘μ‹œν‚€κΈ° μœ„ν•΄μ„œ, μ»΄νŒŒμΌλŸ¬λŠ” ν•„μš”ν•œ λ³€ν™˜μ„ μˆ˜ν–‰ν•¨

  1. λ§€κ°œλ³€μˆ˜κ°€ μ •ν™•ν•˜κ²Œ λŒ€μ‘ν•˜λŠ” 것, 일반 ν•¨μˆ˜κ°€ ν…œν”Œλ¦Ώλ³΄λ‹€ μˆœμœ„κ°€ λ†’λ‹€.
  2. μŠΉκΈ‰ λ³€ν™˜(예λ₯Ό λ“€λ©΄, char와 shortλ₯Ό int ν˜•μœΌλ‘œ, floatλ₯Ό doubleν˜•μœΌλ‘œ μžλ™ λ³€ν™˜)
  3. ν‘œμ€€ λ³€ν™˜(intλ₯Ό char둜, long을 double둜 λ³€ν™˜)
  4. 클래슀 μ„ μ–Έμ—μ„œ μ •μ˜λ˜λŠ” λ³€ν™˜κ³Ό 같은, μ‚¬μš©μž μ •μ˜ λ³€ν™˜

μ •ν™•ν•œ λŒ€μ‘κ³Ό μ΅œμ„ μ˜ λŒ€μ‘

c++λŠ” μ •ν™•ν•œ λŒ€μ‘μ„ λ§Œλ“€κΈ° μœ„ν•΄ λͺ‡ κ°€μ§€ μ‚¬μ†Œν•œ λ³€ν™˜μ„ ν—ˆμš©

λ³€ν™˜ μ „ μ‹€μ œ λ§€κ°œλ³€μˆ˜ λ³€ν™˜ ν›„ ν˜•μ‹ λ§€κ°œλ³€μˆ˜
Type Type &
Type & Type
Type [] * Type
Type(argument-list) Type(*)(argument-list)
Type const Type
Type volatile Type
Type * const Type *
Type * volatile Type *

//Type은 μž„μ˜μ˜ λ°μ΄ν„°ν˜•

//char &κ³Ό 같은 λ°μ΄ν„°ν˜•λ„ Typeν˜•μ΄ 될 수 μžˆλ‹€.

//Type(argument-list)λŠ” μ‹€μ œ λ§€κ°œλ³€μˆ˜λ‘œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜ 이름이, ν˜•μ‹ λ§€κ°œλ³€μˆ˜λ‘œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜ 포인터에 λŒ€μ‘

 

λŒ€μ‘ν•˜λŠ” μ›ν˜•μ΄ μ—¬λŸ¬ 개 μ‘΄μž¬ν•˜λ©΄, μ»΄νŒŒμΌλŸ¬λŠ” μ˜€λ²„ λ‘œλ”© 뢄석 절차λ₯Ό μ™„λ£Œν•  수 μ—†μ§€λ§Œ λ•Œλ‘œλŠ” μ •ν™•ν•˜κ²Œ λŒ€μ‘ν•˜λŠ” ν•¨μˆ˜κ°€ 두 개 인데도 λΆˆκ΅¬ν•˜κ³  μ˜€λ²„λ‘œλ”© 뢄석을 μˆ˜ν–‰ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€.

ex) constκ°€ μ•„λ‹Œ 데이터λ₯Ό μ§€μ‹œν•˜λŠ” 포인터와 μ°Έμ‘°λŠ”, constκ°€ μ•„λ‹Œ 포인터와 μ°Έμ‘° λ§€κ°œλ³€μˆ˜μ— λŒ€μ‘ν•¨.

 

ν•˜λ‚˜μ˜ μ •ν™•ν•œ λŒ€μ‘μ΄ λ‹€λ₯Έ λŒ€μ‘λ³΄λ‹€ 더 쒋은 μ΄μœ λŠ”, ν•˜λ‚˜λŠ” ν…œν”Œλ¦Ώμ΄ μ•„λ‹Œ ν•¨μˆ˜κ³ , λ‹€λ₯Έ ν•˜λ‚˜λŠ” ν…œν”Œλ¦Ώ ν•¨μˆ˜μΌ λ•Œμ΄λ‹€.

μ΄λŸ¬ν•œ 경우, ν…œν”Œλ¦Ώμ΄ μ•„λ‹Œ ν•¨μˆ˜κ°€ λͺ…μ‹œμ  νŠΉμˆ˜ν™”λ₯Ό ν¬ν•¨ν•˜λŠ” ν…œν”Œλ¦Ώ ν•¨μˆ˜λ³΄λ‹€ 더 쒋은 κ²ƒμœΌλ‘œ κ°„μ£Ό

 

λ‘˜ λ‹€ ν…œν”Œλ¦Ώ ν•¨μˆ˜ μ΄λ©΄μ„œ μ •ν™•ν•˜κ²Œ λŒ€μ‘ν•  경우, νŠΉμˆ˜ν™”λœ ν…œν”Œλ¦Ώ ν•¨μˆ˜κ°€ μ’€ 더 쒋은 ν•¨μˆ˜μ΄λ‹€.

 

λ‹€μŒκ³Ό 같은 두 개의 ν…œν”Œλ¦Ώμ΄ μžˆλ‹€κ³  κ°€μ •ν•˜μž.

template<class Type>void recycle(Type t); //#1

template<class Type>void recycle(Type *t)//#2

...

struct blot{int a;char b[10];};

blot ink={25,"spots"};

...

recycle(&ink);

 

recycle ν˜ΈμΆœμ€ blot *둜 ν•΄μ„λ˜λŠ” Type을 κ°€μ§„ ν…œν”Œλ¦Ώ #1에 λŒ€μ‘, inkκ°€ Type일 경우 ν…œν”Œλ¦Ώ #2에 λŒ€μ‘

recycle<blot *>(blot *)은 μƒμ„±λ˜λŠ” 도쀑에 λ³€ν™˜μ΄ 더 적게 μΌμ–΄λ‚˜λ―€λ‘œ 더 νŠΉμˆ˜ν•œ κ²ƒμœΌλ‘œ 간주됨.

 

 

 

 

 

728x90
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ (μƒˆμ°½μ—΄λ¦Ό)
    'πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ 정리' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • C++ 정리 - 27 (정적 쑴속 κΈ°κ°„, λ‚΄λΆ€ 링크, 정적 κΈ°μ–΅ 쑴속 μ‹œκ°„, 링크 μ—†μŒ, κΈ°μ–΅ 곡간 μ œν•œμž, Cv-μ œν•œμž, mutable, const에 λŒ€ν•œ 보좩, ν•¨μˆ˜μ™€ 링크, κΈ°μ–΅ 곡간 ν˜•μ‹κ³Ό 동적 λŒ€μž…)
    • C++ 정리 - 26 (λΆ„ν•  컴파일,κΈ°μ–΅ 쑴속 μ‹œκ°„, μ‚¬μš©λ²”μœ„, 링크,μžλ™ λ³€μˆ˜,정적 λ³€μˆ˜, 정적 쑴속 μ‹œκ°„, μ™ΈλΆ€ 링크,μ‚¬μš© λ²”μœ„ κ²°μ • μ—°μ‚°μž)
    • C++ 정리 - 24 (클래슀 객체와 μ°Έμ‘°,객체,상속,μ°Έμ‘°,setf(),μ°Έμ‘° λ§€κ°œλ³€μˆ˜λŠ” μ–Έμ œ μ‚¬μš©ν•˜λŠ”κ°€?,ν•¨μˆ˜κ°€ μ „λ‹¬λœ 데이터λ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³  μ‚¬μš©λ§Œ ν•˜λŠ” 경우,ν•¨μˆ˜κ°€ 호좜 ν•¨μˆ˜μ˜ 데이터λ₯Ό λ³€κ²½ν•˜λŠ” κ²½..
    • C++ 정리 - 23 (μ°Έμ‘° λ³€μˆ˜,μ°Έμ‘° λ³€μˆ˜μ˜ μ„ μ–Έ,ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜λ‘œμ„œμ˜ μ°Έμ‘°,참쑰의 νŠΉμ„±,lvalue,ꡬ쑰체에 λŒ€ν•œ μ°Έμ‘°,μ°Έμ‘°λ₯Ό 리턴할 λ•Œ μ£Όμ˜ν•  점)
    hugDog
    hugDog
    μ•ˆλ“œλ‘œμ΄λ“œ 곡뢀 쀑인 ν•™μƒμž…λ‹ˆλ‹€!

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