ν΄λμ€ μ€κ³ 볡μ΅
μ»΄νμΌλ¬κ° μλμΌλ‘ μμ±νλ λ©€λ² ν¨μλ€
-λν΄νΈ μμ±μ
λν΄νΈ μμ±μλ λ§€κ° λ³μλ₯Ό μ ν μ¬μ©νμ§ μκ±°λ, λͺ¨λ λ§€κ° λ³μκ° λν΄νΈ 맀κ°λ³μλ₯Ό μ¬μ©νλ μμ±μμ΄λ€. μ¬μ©μκ° μμ±μλ₯Ό νλλ μ μνμ§ μμΌλ©΄, μ¬μ©μλ₯Ό λμ νμ¬ μ»΄νμΌλ¬κ° λν΄νΈ μμ±μλ₯Ό μ μνλ€.
λ©€λ² μ΄κΈ°μ 리μ€νΈλ₯Ό μ¬μ©νμ¬ κΈ°μ΄ ν΄λμ€ μμ±μλ₯Ό λͺ μμ μΌλ‘ νΈμΆνμ§ μκ³ νμ ν΄λμ€ μμ±μλ₯Ό μμ±νλ©΄, μ»΄νμΌλ¬λ μ κ°μ²΄μ κΈ°μ΄ ν΄λμ€ λΆλΆμ μμ±νκΈ° μνμ¬ κΈ°μ΄ ν΄λμ€ λν΄νΈ μμ±μλ₯Ό μ¬μ©νλ€.
μ΄λ€ μ’ λ₯ μ΄λ κ°μ μ¬μ©μκ° μμ±μλ₯Ό μ μνλ©΄, μ»΄νμΌλ¬λ λν΄νΈ μμ±μλ₯Ό μ μνμ§ μλλ€. μ΄λ¬ν κ²½μ°, νμν λν΄νΈ μμ±μλ₯Ό μ 곡νλ κ²μ νλ‘κ·Έλλ¨Έμ μ± μμ΄λ€.
-λ³΅μ¬ μμ±μ
μ΄λ€ ν΄λμ€λ₯Ό μν λ³΅μ¬ μμ±μλ, κ·Έ ν΄λμ€νμ κ°μ²΄λ₯Ό 맀κ°λ³μλ‘ μ¬μ©νλ μμ±μμ΄λ€. κ°μ΄ μ μΈλ λ§€κ° λ³μλ κ·Έ ν΄λμ€νμ λν const μ°Έμ‘°μ΄λ€. μλ₯Ό λ€μ΄ star ν΄λμ€μ λ³΅μ¬ μμ±μλ λ€μκ³Ό κ°μ μνμ κ°μ§λ€.
star(const star &);
λ³΅μ¬ μμ±μλ λ€μκ³Ό κ°μ μν©μμ μ¬μ©λλ€.
- μ κ°μ²΄λ₯Ό λμΌν ν΄λμ€μ λ€λ₯Έ κ°μ²΄λ‘ μ΄κΈ°ν ν λ
- κ°μ²΄κ° ν¨μμ κ°μΌλ‘ μ λ¬λ λ
- ν¨μκ° κ°μ²΄λ₯Ό κ°μΌλ‘ 리ν΄ν λ
- μ»΄νμΌλ¬κ° μμ κ°μ²΄λ₯Ό μμ±ν λ
νλ‘κ·Έλ¨μ΄ λ³΅μ¬ μμ±μλ₯Ό μ¬μ©νμ§ μμΌλ©΄, μ»΄νμΌλ¬λ ν¨μ μ μκ° μλλΌ μνλ§ μ 곡νλ€. κ·Έλ μ§ μμΌλ©΄, νλ‘κ·Έλ¨μ λ©€λ²λ³ μ΄κΈ°νλ₯Ό μννλ λ³΅μ¬ μμ±μλ₯Ό μ μνλ€. λ§μ½ μ΄λ€ λ©€λ²κ° κ·Έ μμ²΄λ‘ ν΄λμ€ κ°μ²΄μΌ κ²½μ°, λ©€λ² κ° μ΄κΈ°νλ ν΄λΉ ν΄λμ€μ μ μλ λ³΅μ¬ μμ±μλ₯Ό μ¬μ©νλ€.
newμ μν΄ μ΄κΈ°νλλ λ©€λ² ν¬μΈν°λ€μ, κΉμ 볡μ¬λ₯Ό μꡬνλ€. λλ λ³κ²½μ΄ μ΄λ£¨μ΄μ ΈμΌ νλ static λ³μλ₯Ό μ¬μ©ν λκ° μλ€. μ΄λ¬ν κ²½μ° μ¬μ©μκ° λ³΅μ¬ μμ±μλ₯Ό μ§μ μ μν΄μΌ ν¨.
λμ μ°μ°μ
λν΄νΈ λμ μ°μ°μλ μ΄λ€ κ°μ²΄λ₯Ό λμΌν ν΄λμ€μ λ€λ₯Έ κ°μ²΄μ λμ νλ κ²μ μ²λ¦¬νλ€.
λν΄νΈ λμ μ λ©€λ² κ° λμ μ μ¬μ©νλ€. μ΄λ€ λ©€λ²κ° ν΄λμ€ κ°μ²΄μΌ κ²½μ°, λν΄νΈ λ©€λ²κ° λμ μ ν΄λΉ ν΄λμ€μ μ μλ λμ μ°μ°μλ₯Ό μ¬μ©νλ€.
star ν΄λμ€μ λμ μ°μ°μμ μνμ λ€μκ³Ό κ°λ€.
star &star::operator=(const star &);
μ»΄νμΌλ¬λ νλμ λ°μ΄ν°νμ λ€λ₯Έ λ°μ΄ν°νμ λμ νλ λμ μ°μ°μλ μμ±νμ§ μλλ€.
λ¬Έμμ΄μ star κ°μ²΄μ λμ νκ³ μΆλ€λ©΄, 첫 λ²μ§Έ μ κ·Ό λ°©μμ κ·Έλ¬ν μ°μ°μλ₯Ό λͺ μμ μΌλ‘ μ μνλ κ²μ΄λ€.
star &star::operator=(const char *){...}
λ λ²μ§Έ μ κ·Ό λ°©μμ λ¬Έμμ΄μ star κ°μ²΄λ‘ λ³ννλ λ³ν ν¨μμ, starλ₯Ό starμ λμ νλ λμ μ°μ°μ ν¨μλ₯Ό μ¬μ©νλ κ²μ΄λ€.
ν΄λμ€ λ©μλμ κ΄λ ¨λ κ·Έ λ°μ κ³ λ € μ¬ν
-μμ±μ κ΄λ ¨ μ¬ν
μμ±μλ€μ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νλ€.
-νκ΄΄μ κ΄λ ¨ μ¬ν
ν΄λμ€ μμ±μμμ newμ μν΄ λμ λλ λ©λͺ¨λ¦¬λ₯Ό ν΄μ νκ³ , ν΄λμ€ κ°μ²΄μ νκ΄΄μ λ°λ₯΄λ μ 리 μμ μ μ²λ¦¬νκΈ° μν΄, λͺ μμ νκ΄΄μλ₯Ό λ°λμ μ μν΄μΌ ν¨. ν΄λμ€λ₯Ό κΈ°μ΄ ν΄λμ€λ‘ μ¬μ©ν μμ μ΄λΌλ©΄, κ°μ νκ΄΄μλ₯Ό μ 곡ν΄μΌ νλ€.
-λ³ν κ΄λ ¨ μ¬ν
μ νν νλμ 맀κ°λ³μλ₯Ό μ¬μ©νμ¬ νΈμΆν μ μλ μμ±μλ, κ·Έ λ§€κ° λ³μμ λ°μ΄ν°νμ ν΄λμ€νμΌλ‘ λ³ννλ κ²μ μ μνλ€.
Star(const char *); //const char *λ₯Ό starλ‘ λ³ννλ€.
Star(const Spectral &,int members = 1); //Spectralμ starλ‘ λ³ννλ€.
μλ₯Ό λ€μ΄, ν΄λμ€ λ§€κ° λ³μλ₯Ό μ¬μ©νλλ‘ μ μλ ν¨μμ λ³νν μ μλ λ°μ΄ν°νμ΄ μ λ¬λμμ λ, λ³ν μμ±μκ° μ¬μ©λ¨.
Star north;
north = "polaris";
star::star(const char *)λ₯Ό μ¬μ©νμ¬ star κ°μ²΄λ₯Ό μμ±νκ³ , μμ±λ star κ°μ²΄λ₯Ό λ§€κ° λ³μλ‘ μ¬μ©νμ¬ star::operator=(const star &) ν¨μλ₯Ό νΈμΆνλ€.
νλμ 맀κ°λ³μλ₯Ό μ¬μ©νλ μμ±μμ μνμ explicitλ₯Ό μ¬μ©νλ©΄, μμμ λ³νμ μ¬μ©ν μ μκ² λλ€.
ν΄λμ€ κ°μ²΄λ₯Ό λ€λ₯Έ λ°μ΄ν°νμΌλ‘ λ³ννλ €λ©΄, λ³ν ν¨μλ₯Ό μ μν΄μΌ νλ€. λ³ν ν¨μλ λ§€κ° λ³μλ₯Ό μ¬μ©νμ§ μκ³ , λ³ν κ²°κ³Ό λ°μ΄ν°νμ μ΄λ¦μ 리ν΄νμΌλ‘ μ μΈνμ§ μλ ν΄λμ€ λ©€λ² ν¨μμ΄λ€. 리ν΄νμ μ μΈνμ§ μλλ°λ, μνλ λ³ν κ°μ 리ν΄ν΄μΌ νλ€.
star::star double() const{...} //starλ₯Ό doubleλ‘ λ³ν
star::star const char *() const {...} //starλ₯Ό const char* λ‘ λ³ν
c++11μ λ³ν ν¨μμ ν¨κ» explicit ν€μλλ₯Ό μ¬μ©νλ μ΅μ μ μ 곡νλ€.
-κ°μΌλ‘ μ λ¬κ³Ό μ°Έμ‘°λ‘ μ λ¬
μΌλ°μ μΌλ‘, κ°μ²΄λ₯Ό λ§€κ° λ³μλ‘ μ¬μ©νλ ν¨μλ₯Ό μμ±νλ €λ©΄, κ·Έ κ°μ²΄λ₯Ό μ°Έμ‘°λ‘ μ λ¬ν΄μΌ νλ€. κ·Έ μ΄μ μ€ νλλ ν¨μ¨μ± λλ¬Έμ΄λ€. λ λ€λ₯Έ μ΄μ λ κ°μ ν¨μλ₯Ό μ¬μ©νλ μμμ κ²½μ°, κΈ°μ΄ ν΄λμ€ μ°Έμ‘° λ§€κ° λ³μλ₯Ό λ°μλ€μ΄λλ‘ μ μλ ν¨μλ, νμ ν΄λμ€μ λν΄μλ μ±κ³΅μ μΌλ‘ μ¬μ©ν μ μλ€.
κ°μ²΄ 리ν΄κ³Ό μ°Έμ‘° 리ν΄
κ°μ²΄λ₯Ό μ§μ 리ν΄νλ κ²κ³Ό μ°Έμ‘°λ₯Ό 리ν΄νλ κ²μ μ°¨μ΄λ ν¨μ μνκ³Ό ν¨μ 머리μ λνλλ€.
star nova1(const star &);
star &nova2(const star &);
κ°μ²΄κ° μλ μ°Έμ‘°λ₯Ό 리ν΄ν΄μΌ νλ μ΄μ λ, μ°Έμ‘°λ₯Ό 리ν΄νλ©΄ μκ°κ³Ό λ©λͺ¨λ¦¬κ° μ μ½λκΈ° λλ¬Έ. κ·Έλ¬λ μ°Έμ‘°λ₯Ό 리ν΄νλ κ²μ΄ νμ κ°λ₯ν κ²μ μλλ€. ν¨μλ κ·Έ ν¨μ μμμ μμ±λ μμ κ°μ²΄μ λν μ°Έμ‘°λ₯Ό 리ν΄νλ©΄ μ λλ€. μ°Έμ‘°λ ν¬μΈν°λ₯Ό ν΅ν΄ μ λ¬λ κ°μ²΄λ₯Ό ν¨μκ° λ¦¬ν΄νλ€λ©΄, κ·Έ κ°μ²΄λ₯Ό μ°Έμ‘°λ‘ λ¦¬ν΄ν΄μΌ νλ€.
const Stock &Stock::topval(const Stock &s) const
{
if(s.total_val > total_val)
return s;
else
return *this;
}
-const μ μ¬μ©
λ©μλκ° λ§€κ° λ³μλ₯Ό λ³κ²½νμ§ μλλ€λ νμ μ΄ μμ λ μ¬μ© κ°λ₯
star::star(const char *s) {...}
λ©μλκ° κ·Έκ²μ νΈμΆν κ°μ²΄λ₯Ό λ³κ²½νμ§ μλλ€λ νμ μ΄ μμ λ const μ¬μ©
void star::show() const{...}
public μμμ κ΄λ ¨λ κ·Έ λ°μ κ³ λ €μ¬ν
- is-a κ΄κ³
μμνλ νμ ν΄λμ€κ° κΈ°μ΄ ν΄λμ€μ νΉλ³ν μ’ λ₯κ° μλλ©΄ public νμμ μ¬μ©νλ©΄ μ λλ€.
μμ κ°μ ν¨μλ₯Ό κ°μ§κ³ μλ μΆμν κΈ°μ΄ ν΄λμ€λ₯Ό μμ±νκ³ , λ€λ₯Έ ν΄λμ€λ₯Ό νμμν€λ κ²μ΄ μ΅μ μ λ°©λ²μΌ μ μλ€.
λͺ μμ λ°μ΄ν°ν λ³ν μμ΄ κΈ°μ΄ ν΄λμ€ ν¬μΈν°κ° νμ ν΄λμ€ κ°μ²΄λ₯Ό μ§μν μ μκ³ , κΈ°μ΄ ν΄λμ€ μ°Έμ‘°κ° νμ ν΄λμ€ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλ€λ κ²μ΄ is-a κ΄κ³μ ν νΉμ±μ΄λ€. κ·Έ μμ μ±λ¦½νμ§ μλλ€.
-μμλμ§ μλ κ²
μμ±μλ μμλμ§ μλλ€. μΌλ°μ μΌλ‘ νμ ν΄λμ€ μμ±μλ νμ ν΄λμ€ κ°μ²΄μ κΈ°μ΄ ν΄λμ€ λΆλΆμ μμ±νκΈ° μν΄, λ©€λ² μ΄κΈ°μ 리μ€νΈ λ¬Έλ²μ μ¬μ©νμ¬ κΈ°μ΄ ν΄λμ€ μμ±μλ₯Ό νΈμΆνλ€.
νκ΄΄μλ μμλμ§ μλλ€. κ·Έλ¬λ μ΄λ€ κ°μ²΄κ° νκ΄΄λ λ, νλ‘κ·Έλ¨μ λ¨Όμ νμ νκ΄΄μλ₯Ό νΈμΆνκ³ λμ κΈ°μ΄ νκ΄΄μλ₯Ό νΈμΆνλ€. μΌλ°μ μΌλ‘, μ΄λ€ ν΄λμ€κ° κΈ°μ΄ ν΄λμ€μ μν μ νλ€λ©΄, κ·Έ νκ΄΄μλ κ°μ μ΄μ΄μΌ νλ€.
λμ μ°μ°μλ μμλμ§ μλλ€.