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++ 정리 - 29 (객체와 클래슀, μ ˆμ°¨μ‹ ν”„λ‘œκ·Έλž˜λ°κ³Ό 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°, 좔상화와 클래슀, c++의 클래슀, 클래슀 λ©€λ²„ν•¨μˆ˜μ˜ κ΅¬ν˜„, 인라인 λ©”μ„œλ“œ, 클래슀 μ„ μ–Έμ˜ 일반적인 ν˜•μ‹, 클래슀 생성..

2020. 10. 30. 18:21
728x90

객체와 클래슀

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)은 ν”„λ‘œκ·Έλž¨ 섀계 방법 쀑 ν•˜λ‚˜μ΄λ‹€.

OPP의 κ°€μž₯ μ€‘μš”ν•œ κΈ°λŠ₯

  • 좔상화
  • μΊ‘μŠν™”μ™€ 데이터 은닉
  • λ‹€ν˜•
  • 상속
  • μ½”λ“œμ˜ μž¬ν™œμš©

클래슀(class)λŠ” μ΄λŸ¬ν•œ opp κΈ°λŠ₯듀을 κ΅¬ν˜„ 및 κ²°ν•©ν•˜λŠ”λ° κ°€μž₯ μ€‘μš”ν•œ c++ 도ꡬ이닀.

 

μ ˆμ°¨μ‹ ν”„λ‘œκ·Έλž˜λ°κ³Ό 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°

oppμ ‘κ·Ό 방식을 μ‚¬μš©ν•˜μ—¬, ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 객체λ₯Ό μ„œμˆ ν•˜λŠ”λ° ν•„μš”ν•œ 데이터와, μ‚¬μš©μžκ°€ κ·Έ 데이터λ₯Ό λ‹€λ£¨λŠ” 방법에 λŒ€ν•΄ μƒκ°ν•˜λ©΄μ„œ, μ‚¬μš©μžκ°€ μ΄ν•΄ν•˜λŠ” λ°©μ‹λŒ€λ‘œ 객체에 μ΄ˆμ μ„ λ§žμΆ˜λ‹€.

 

좔상화와 클래슀

-λ°μ΄ν„°ν˜•μ΄λž€ 무엇인가?

κΈ°λ³Έν˜•μ„ μ„œμˆ ν•˜λŠ” 것은 λ‹€μŒκ³Ό 같은 μ„Έ κ°€μ§€λ₯Ό κ²°μ •ν•˜λŠ” 것이닀.

  • 데이터 객체에 ν•„μš”ν•œ λ©”λͺ¨λ¦¬μ˜ 크기λ₯Ό κ²°μ •ν•œλ‹€
  • λ©”λͺ¨λ¦¬μ— μžˆλŠ” λΉ„νŠΈλ“€μ„ μ–΄λ–»κ²Œ 해석할지 κ²°μ •ν•œλ‹€
  • 데이터 객체λ₯Ό μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰ν•  수 μžˆλŠ” μ—°μ‚°μ΄λ‚˜ λ©”μ„œλ“œλ₯Ό κ²°μ •ν•œλ‹€

c++의 클래슀

ν΄λž˜μŠ€λŠ” 좔상화λ₯Ό μ‚¬μš©μž μ •μ˜ λ°μ΄ν„°ν˜•μœΌλ‘œ λ³€ν™˜ν•΄ μ£ΌλŠ” c++의 μˆ˜λ‹¨μ΄λ‹€. 데이터 ν‘œν˜„κ³Ό 데이터λ₯Ό μ‘°μž‘ν•˜λŠ” λ©”μ„œλ“œλ“€μ„ ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€ μ•ˆμ— 결합함

 

클래슀 μ„ μ–Έ: 데이터 멀버와 public μΈν„°νŽ˜μ΄μŠ€,(λ©”μ„œλ“œλΌκ³  λΆ€λ₯΄λŠ”) 멀버 ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 데이터 ν‘œν˜„μ„ μ„œμˆ ν•œλ‹€.

클래슀 λ©”μ„œλ“œ μ •μ˜: 클래슀 멀버 ν•¨μˆ˜κ°€ μ–΄λ–»κ²Œ κ΅¬ν˜„λ˜λŠ”μ§€λ₯Ό μ„œμˆ ν•œλ‹€.

 

μ ‘κ·Ό μ œμ–΄

private와 publicλΌλŠ” μƒˆλ‘œμš΄ ν‚€μ›Œλ“œκ°€ λ„μž…λ¨.

이 λ ˆμ΄λΈ”λ“€μ€ 클래슀 멀버에 λŒ€ν•œ μ ‘κ·Ό μ œμ–΄λ₯Ό μ„œμˆ ν•œλ‹€.

 

νŠΉμ • 클래슀의 객체λ₯Ό μ‚¬μš©ν•˜λŠ”  ν”„λ‘œκ·Έλž¨μ€ κ·Έ 객체의 publicλΆ€λΆ„μ—λŠ” 직접 μ ‘κ·Ό ν•  수 μžˆλ‹€.

κ·ΈλŸ¬λ‚˜ ν”„λ‘œκ·Έλž¨μ€ public λ©€λ²„ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œλ§Œ κ·Έ 객체의 private 멀버에 μ ‘κ·Όν•  수 μžˆλ‹€.

public λ©€λ²„ν•¨μˆ˜λŠ”λ©€λ²„ ν•¨μˆ˜λŠ” 객체의 private 멀버와 ν”„λ‘œκ·Έλž¨μ„ μž‡λŠ” 닀리 역할이닀. 즉 public 멀버 ν•¨μˆ˜λŠ” 객체와 ν”„λ‘œκ·Έλž¨ μ‚¬μ΄μ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•œλ‹€. 이와 같이 ν”„λ‘œκ·Έλž¨μ΄ 데이터에 직접 μ ‘κ·Όν•˜μ§€ λͺ»ν•˜κ²Œ μ°¨λ‹¨ν•˜λŠ” 것을 데이터 은닉(data hiding)이라 함.

 

public μΈν„°νŽ˜μ΄μŠ€λŠ” μ„€κ³„μ˜ 좔상화λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

세뢀적인 κ΅¬ν˜„λ“€μ„ λ”°λ‘œ κ²°ν•©ν•˜μ—¬ 좔상화와 λΆ„λ¦¬ν•˜λŠ” 것을 μΊ‘μŠν™”λΌ ν•œλ‹€.(데이터 은닉이 μΊ‘μŠν™”μ˜ ν•œ μ˜ˆμ΄λ‹€)

μΊ‘μŠν™”μ˜ 또 λ‹€λ₯Έ μ˜ˆλŠ” 클래슀 ν•¨μˆ˜λ“€μ˜ μ •μ˜λ₯Ό 클래슀 μ„ μ–Έκ³Ό λ…λ¦½λœ νŒŒμΌμ— λ„£λŠ” 것이닀.

 

멀버 μ ‘κ·Ό μ œμ–΄: public λ˜λŠ” private?

일반적으둜 데이터항λͺ©λ“€μ€ private 뢀뢄에 μ„ μ–Έλœλ‹€.

클래슀 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬μ„±ν•˜λŠ” 멀버 ν•¨μˆ˜λ“€μ€ public 뢀뢄에 μ„ μ–Έλœλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄, ν•¨μˆ˜ 호좜 λΆˆκ°€

private 뢀뢄에 μ„ μ–Έλœ λ©€λ²„ν•¨μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ 직접 ν˜ΈμΆœν•  수 μ—†λ‹€. (public λ©”μ„œλ“œλ“€μ€ μ‚¬μš© κ°€λŠ₯)

일반적으둜 private λ©€λ²„ν•¨μˆ˜λŠ” public μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬μ„±ν•˜μ§€ μ•ŠλŠ” 세뢀적인 κ΅¬ν˜„μ„ μ²˜λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ¨.

 

클래슀 객체에 λŒ€ν•œ λ””ν΄νŠΈ μ ‘κ·Όμ œμ–΄κ°€ private둜 μ§€μ •λ˜μžˆκΈ° λ•Œλ¬Έμ— 클래슀 μ„ μ–Έμ—μ„œ ν‚€μ›Œλ“œ privateλŠ” 없어도 λœλ‹€.

 

-클래슀 λ©€λ²„ν•¨μˆ˜μ˜ κ΅¬ν˜„

멀버 ν•¨μˆ˜μ˜ μ •μ˜λŠ” 각각 ν•˜λ‚˜μ˜ ν•¨μˆ˜ 머리와 ν•˜λ‚˜μ˜ ν•¨μˆ˜ λͺΈμ²΄λ₯Ό κ°€μ§„λ‹€. 멀버 ν•¨μˆ˜ μ •μ˜λŠ” λ¦¬ν„΄ν˜•κ³Ό λ§€κ°œλ³€μˆ˜λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

멀버 ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ, κ·Έ 멀버 ν•¨μˆ˜κ°€ μ–΄λŠ ν΄λž˜μŠ€μ— μ†ν•˜λŠ”μ§€ λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ‚¬μš© λ²”μœ„ κ²°μ • μ—°μ‚°μž(::)λ₯Ό μ‚¬μš©ν•΄μ•Ό 함

클래슀의 λ©”μ„œλ“œλŠ” κ·Έ 클래슀의 private λΆ€λΆ„μ—λ§Œ μ ‘κ·Ό κ°€λŠ₯

 

ex) void Stock::update(double price)

 

Stock::update()λŠ” κ·Έ ν•¨μˆ˜μ˜ κ²€μ¦λœ 이름이라 λΆ€λ₯Έλ‹€. ν•œνŽΈ, κ°„λ‹¨ν•œ update()λŠ” κ·Έ 전체 μ΄λ¦„μ˜ 약식 ν‘œκΈ°λ‘œ, κ·Έ 클래슀 μ‚¬μš©λ²”μœ„ μ•ˆμ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯

 

λ©”μ„œλ“œλŠ” 멀버가 μ•„λ‹Œ ν•¨μˆ˜λ“€μ„ μ‚¬μš©ν•˜μ—¬ 이 데이터 멀버듀에 μ ‘κ·Όν•˜λ € μ‹œλ„ν•˜λ©΄, μ»΄νŒŒμΌλŸ¬κ°€ λ©ˆμΆ”κ²Œ ν•œλ‹€.

 

인라인 λ©”μ„œλ“œ

클래슀 μ„ μ–Έ μ•ˆμ— μ •μ˜λ₯Ό κ°€μ§€κ³  μžˆλŠ” λͺ¨λ“  ν•¨μˆ˜λŠ” μžλ™μœΌλ‘œ 인라인 ν•¨μˆ˜κ°€ λœλ‹€.

μ›ν•œλ‹€λ©΄ 클래슀 μ„ μ–Έμ˜ 외뢀에 멀버 ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜κ³ , 그것을 인라인 ν•¨μˆ˜λ‘œ λ§Œλ“€ 수 μžˆλ‹€. 클래슀 μ„ΈλΆ€ κ΅¬ν˜„ λΆ€λΆ„μ—μ„œ κ·Έ ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ inlineμ΄λΌλŠ” μ œν•œμžλ₯Ό 뢙이면 λœλ‹€.

class Stock
{
private:
	void set_tot();//μ •μ˜ 뢄리
public:
    ...
};
inline void Stock::set_tot()
{
	total_val=shares*share_val;
}

인라인 ν•¨μˆ˜λ“€μ€ 그듀이 μ‚¬μš©λ˜λŠ” 각각의 νŒŒμΌμ—μ„œ μ •μ˜λ  것을 μš”κ΅¬ν•¨.

닀쀑 파일 ν”„λ‘œκ·Έλž¨μ„ κ΅¬μ„±ν•˜λŠ” λͺ¨λ“  νŒŒμΌμ—μ„œ 인라인 μ •μ˜λ₯Ό μ‚¬μš©ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법은, ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ μ •μ˜λΌμžˆλŠ” 헀더 νŒŒμΌμ— 인라인 μ •μ˜λ₯Ό ν•¨κ»˜ λ„£λŠ” 것.

 

μ–΄λŠ 객체가 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν• κΉŒ?

객체λ₯Ό μƒμ„±ν•˜λŠ” 방법 쀑 κ°€μž₯ κ°„λ‹¨ν•œ 것은 클래슀 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” 것이닀.

Stock kate,joe;

이것은 kate와 joeλΌλŠ”, stack 클래슀의 두 객체λ₯Ό 생성함.

 

이듀 객체에 멀버 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 방법은 ꡬ쑰체와 ꡬ쑰체 멀버λ₯Ό μ‚¬μš©ν•˜λ“―μ΄, 멀버 μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” 것이닀.

kate.show(); //kate 객체가 멀버 ν•¨μˆ˜ 호좜

joe.show(); //joe 객체가 멀버 ν•¨μˆ˜ 호좜

 

멀버 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œμ—λŠ” κ·Έ 멀버 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 데 μ‚¬μš©λœ νŠΉμ •ν•œ 객체의 데이터 멀버듀이 μ‚¬μš©λœλ‹€.

 

μ‹€ν–‰μƒμ˜ λ³€κ²½

ostream ν΄λž˜μŠ€λŠ” 양식을 μ»¨νŠΈλ‘€ν•˜λŠ” 멀버 ν•¨μˆ˜λ₯Ό μ§€λ…”λ‹€.

std::cout.setf(std::ios_base::fixed,std::ios_base::floatfield);

이것은 ν”Œλž˜κ·Έλ₯Ό κ³ μ • μ†Œμˆ˜μ  ν‘œκΈ°λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ cout 개체 μ•ˆμ— ν”Œλž˜κ·Έλ₯Ό μ„ΈνŒ…ν•œλ‹€. λ‹€μŒμ˜ ꡬ문은 cout둜 ν•˜μ—¬κΈˆ κ³ μ • μ†Œμˆ˜μ  ν‘œκΈ°λ₯Ό μ‚¬μš©ν•  λ•Œ, μ†Œμˆ˜μ  μ΄ν•˜ μ„Έ μžλ¦¬κΉŒμ§€ 보여주도둝 함. std::cout.precision(3);

 

λ©”μ„œλ“œμ— λŒ€ν•œ λ³€κ²½ 사항을 κ΅¬ν˜„ν•  λ•Œμ—λŠ”, ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž¨μ˜ λ‹€λ₯Έ 뢀뢄에 λŒ€ν•˜μ—¬ 영ν–₯을 μ£Όμ§€ μ•Šμ•„μ•Ό 함. λ”°λΌμ„œ λ©”μ„œλ“œκ°€ 호좜되기 μ΄μ „μ˜ μƒνƒœλ‘œ 정보λ₯Ό λ¦¬μ…‹ν•˜λŠ” 것이 μ•ˆμ •λœ μ‚¬μš©λ²•μ΄λ‹€.

std::streamsize prec = std::cout.precision(3);
//정확성을 μœ„ν•΄ 이전 값을 μ €μž₯
...
std::cout.precision(prec); //κ³Όκ±° κ°’μœΌλ‘œ 리턴

//원본 ν”Œλž˜κ·Έ μ €μž₯
std::ios_base::fmtflags orig = std::cout.setf(std::ios_base::fixed);
...
//μ €μž₯된 κ°’ 리셋
std::cout.setf(orig,std::ios_base::floatfield);

 

μ§€κΈˆκΉŒμ§€μ˜ μ„€λͺ… μš”μ•½

클래슀 섀계λ₯Ό μ„œμˆ ν•˜λŠ” 첫 번째 λ‹¨κ³„λŠ” 클래슀 선언을 μ œκ³΅ν•˜λŠ” 것이닀. 클래슀 선언은 데이터 멀버와 ν•¨μˆ˜ 멀버λ₯Ό κ°€μ§„λ‹€. private 뢀뢄에 μ„ μ–Έλœ 멀버듀은 멀버 ν•¨μˆ˜λ“€μ„ ν†΅ν•΄μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯. public 뢀뢄에 μ„ μ–Έλœ 멀버듀은 클래슀 객체λ₯Ό μ‚¬μš©ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ΄ 직접 μ ‘κ·Ό κ°€λŠ₯.

일반적으둜, 데이터 멀버듀은 private 뢀뢄에 λ“€μ–΄κ°€κ³ , 멀버 ν•¨μˆ˜λ“€μ€ public 뢀뢄에 λ“€μ–΄κ°„λ‹€.

 

클래슀 μ„ μ–Έμ˜ 일반적인 ν˜•μ‹

class className
{
	private:
    	data member declarations
    public:
    	member function prototypes
};

 

클래슀 섀계λ₯Ό μ„œμˆ ν•˜λŠ” 두 번째 λ‹¨κ³„λŠ” 클래슀 멀버 ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것.

클래슀 선언에 ν•¨μˆ˜ μ›ν˜• λŒ€μ‹  μ™„μ „ν•œ ν•¨μˆ˜ μ •μ˜λ₯Ό 넣을 수 μžˆμœΌλ‚˜, 일반적으둜 맀우 짧은 ν•¨μˆ˜λ“€μ€ μ œμ™Έν•˜κ³  ν•¨μˆ˜ μ •μ˜λ“€μ„ λ”°λ‘œ λΆ„λ¦¬ν•˜μ—¬ μ œκ³΅ν•œλ‹€.

κ·Έ ν›„, 멀버 ν•¨μˆ˜κ°€ μ–΄λŠ ν΄λž˜μŠ€μ— μ†ν•˜λŠ”μ§€ μ‚¬μš© λ²”μœ„ κ²°μ • μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•¨.

예λ₯Ό λ“€μ–΄ Bozo ν΄λž˜μŠ€κ°€ charλ₯Ό μ§€μ‹œν•˜λŠ” 포인터λ₯Ό λ¦¬ν„΄ν•˜λŠ” Retort()λΌλŠ” 멀버 ν•¨μˆ˜λ₯Ό κ°€μ§„λ‹€ ν•˜λ©΄ ν•¨μˆ˜ λ¨Έλ¦¬λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

char * Bozo::Retort()

 

μ–΄λ–€ 클래슀의 객체λ₯Ό μƒμ„±ν•˜λ €λ©΄, 클래슀 이름을 λ°μ΄ν„°ν˜•μ²˜λŸΌ μ‚¬μš©ν•˜λ©΄ λœλ‹€.

Bozo bozetta;

클래슀 객체λ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨ 클래슀 멀버 ν•¨μˆ˜(λ˜λŠ” λ©”μ„œλ“œ)λ₯Ό ν˜ΈμΆœν•œλ‹€. λ„νŠΈ 멀버 μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

cout<<bozetta.Retort();

 

클래슀 μƒμ„±μžμ™€ 파괴자

c++λŠ”, μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•˜κ³  κ·Έλ“€μ˜ 데이터 멀버에 값을 λŒ€μž…ν•΄ μ£ΌλŠ” 클래슀 μƒμ„±μž(class constructor)λΌλŠ” νŠΉλ³„ν•œ 멀버 ν•¨μˆ˜λ₯Ό μ œκ³΅ν•¨

 

μƒμ„±μžμ˜ 이름은 클래슀의 이름과 κ°™λ‹€. 예λ₯Ό λ“€μ–΄, Stockμ΄λΌλŠ” 클래슀의 μƒμ„±μžλŠ” Stock()μ΄λΌλŠ” μ΄λ¦„μ˜ 멀버 ν•¨μˆ˜μ΄λ‹€.

μƒμ„±μžλŠ” 리턴 값이 μ—†λŠ”λ°λ„ void ν˜•μœΌλ‘œ μ„ μ–Έν•˜μ§€ μ•ŠλŠ”λ‹€. μƒμ„±μžμ—λŠ” λ°μ΄ν„°ν˜•μ„ μ„ μ–Έν•˜μ§€ μ•ŠλŠ”λ‹€.

 

μƒμ„±μžμ˜ μ„ μ–Έκ³Ό μ •μ˜

Stock κ°μ²΄λŠ” μ™ΈλΆ€μ—μ„œ μ œκ³΅λ˜λŠ” μ„Έ 개의 값을 κ°€μ§„λ‹€κ³  ν•˜μž.

(const string &,long , double ν˜•μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό μ œκ³΅ν•˜κ³ , longκ³Ό double ν˜•μ˜ 값듀은 0으둜 μ„€μ •ν•˜κΈ°λ₯Ό μ›ν•œλ‹€κ³  κ°€μ •.(λ””ν΄νŠΈ λ§€κ°œλ³€μˆ˜ μ‚¬μš©))

 

//λ””ν΄νŠΈ λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μƒμ„±μžμ˜ μ›ν˜•

Stock(const string & co,long n=0,double pr=0.0);

//μƒμ„±μž μ •μ˜
Stock::Stock(const string &co, long n, double pr)
{
	company=co;
    if(n<0)
    {
    	std::cout<<"주식 μˆ˜λŠ” μŒμˆ˜κ°€ 될 수 μ—†μœΌλ―€λ‘œ,"
        		<<company<<" sharesλ₯Ό 0으둜 μ„€μ •.\n";
        shares=0;
    }
    else
    	shares=n;
    share_val=pr;
    set_tot();
}
728x90
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬
    'πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ 정리' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • C++ 정리 - 31 (좔상화 λ°μ΄ν„°ν˜•(abstract data type, ADT), μ—°μ‚°μž μ˜€λ²„λ‘œλ”©, ν”„λ Œλ“œμ˜ λ„μž…)
    • C++ 정리 - 30 (μƒμ„±μž μ‚¬μš©ν•˜κΈ°, λ””ν΄νŠΈ μƒμ„±μž, 파괴자, c++11의 리슀트 μ΄ˆκΈ°ν™”, const 멀버 ν•¨μˆ˜, this 포인터, 객체 λ°°μ—΄, 클래슀 μ‚¬μš© λ²”μœ„, λ²”μœ„κ°€ μ •ν•΄μ§„ μ—΄κ±°(c++11))
    • C++ 정리 - 28 (new μ—°μ‚°μžλ₯Ό μ΄μš©ν•œ μ΄ˆκΈ°ν™”, μœ„μΉ˜ μ§€μ • new μ—°μ‚°μž, 이름 곡간, using μ„ μ–Έκ³Ό using μ§€μ‹œμž, 이름 곡간에 λŒ€ν•œ 보좩)
    • C++ 정리 - 27 (정적 쑴속 κΈ°κ°„, λ‚΄λΆ€ 링크, 정적 κΈ°μ–΅ 쑴속 μ‹œκ°„, 링크 μ—†μŒ, κΈ°μ–΅ 곡간 μ œν•œμž, Cv-μ œν•œμž, mutable, const에 λŒ€ν•œ 보좩, ν•¨μˆ˜μ™€ 링크, κΈ°μ–΅ 곡간 ν˜•μ‹κ³Ό 동적 λŒ€μž…)
    hugDog
    hugDog
    μ•ˆλ“œλ‘œμ΄λ“œ 곡뢀 쀑인 ν•™μƒμž…λ‹ˆλ‹€!

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