μΆμν λ°μ΄ν°ν(abstract data type, ADT)
μ€νμ νΉμ±μ μΌλ°μ μ΄κ³ μΆμμ μΈ λ°©μμΌλ‘ μ΄ν΄λ³΄μ.
- λΉ μ€ν μμ± κ°λ₯
- μ€νμ κΌλκΈ°μ νλͺ© μΆκ° κ°λ₯
- μ€νμ κΌλκΈ°μμ νλͺ© μμ κ°λ₯
- μ€νμ΄ κ°λ μ°¨μλμ§ κ²μ¬ κ°λ₯
- μ€νμ΄ λΉμ΄μλμ§ κ²μ¬ κ°λ₯
ν΄λμ€μ νμ©
μ°μ°μ μ€λ²λ‘λ©
μ°μ°μ μ€λ²λ‘λ©μ c++κ° κ°μ§ λ€ν νΉμ±μ ν μμ΄λ€.
μ°μ°μ μ€λ²λ‘λ©μ, c++ μ°μ°μλ€μ λ€μ€μ μΈ μλ―Έλ₯Ό λΆμ¬νλ κ²μ΄λ€.
c++μμλ μ°μ°μ μ€λ²λ‘λ©μ μ¬μ©μ μ μ λ°μ΄ν°ν κΉμ§ νμ₯ν μ μλ€.
μλ₯Ό λ€μ΄ 2κ°μ λ°°μ΄μ λνλ κ²μ μμ£Ό μ¬μ΄ κ³μ°μ΄λ€.
for(int i=0;i<20;i++)
evening[i]=sam[i]+janet[i];
κ·Έλ¬λ c++μμλ λ°°μ΄μ λνλ΄λ ν΄λμ€λ₯Ό μ μνκ³ , +μ°μ°μλ₯Ό μ€λ²λ‘λ©νμ¬ λ€μκ³Ό κ°μ΄ μ²λ¦¬ κ°λ₯
evening=sam+janet;
μ°μ°μλ₯Ό μ€λ²λ‘λ©νλ €λ©΄, μ°μ°μ ν¨μλ₯Ό μ¬μ©ν΄μΌ νλ€.
operatorop(argument-list)
μ¬κΈ°μ opλ μ€λ²λ‘λ©ν μ°μ°μλ₯Ό λνλ΄λ κΈ°νΈμ΄λ€.
(operator+()λ +μ°μ°μλ₯Ό μ€λ²λ‘λ©νλ€.)
μλ‘μ΄ κΈ°νΈλ₯Ό μ¬μ©ν μ μλ€. (operator@() ν¨μλ₯Ό λ§λ€ μ μλ€. κ·Έλ¬λ operator[]() ν¨μλ []κ° λ°°μ΄ μΈλ±μ€ μ°μ°μμ΄κΈ° λλ¬Έμ μ€λ²λ‘λ© κ°λ₯)
μ€λ²λ‘λ© μ μ½
μ€λ²λ‘λ©λ μ°μ°μλ, μ μ΄λ νλμ νΌμ°μ°μκ° μ¬μ©μ μ μ λ°μ΄ν°νμΌ κ²μ μꡬνλ€. μ΄ μ μ½μ νμ€ λ°μ΄ν°νμ μν΄ μ¬μ©λλ μ°μ°μλ€μ΄ μ€λ²λ‘λ©λλ κ²μ λ§μμ€λ€. (λΊμ μ°μ°μ(-)λ₯Ό λ κ°μ double ν κ°μ μ°¨κ° μλ ν©μ μ°μΆνλλ‘ μ¬μ μ λΆκ°)
μ€λ²λ‘λ©λ μ°μ°μλ₯Ό, μ€λ¦¬μ§λ μ°μ°μμ μ μ©λλ λ¬Έλ² κ·μΉμ μλ°νλ λ°©μμΌλ‘ μ¬μ© λΆκ°.
μ°μ°μ μ°μ μμλ λ³κ²½ λΆκ°. (μ€λ²λ‘λ©λ λ§μ μ°μ°μλ 보ν΅μ λ§μ μ°μ°μμ κ°μ μ°μ μμ κ°μ§)
μ°μ°μ κΈ°νΈλ₯Ό μλ‘ λ§λ€ μ μλ€.
μλ₯Ό λ€μ΄ κ±°λμ κ³±μ λνλΌ λͺ©μ μΌλ‘ operator**()μ κ°μ ν¨μ μ μ λΆκ°
λ€μκ³Ό κ°μ μ°μ°μλ€μ μ€λ²λ‘λ© λΆκ°
sizeof,.(λ©€λ² μ°μ°μ), .*(λ©€λ² μ§μ ν¬μΈν° μ°μ°μ), ::(μ¬μ© λ²μ κ²°μ μ°μ°μ), ?:(쑰건 μ°μ°μ), typeid(RTTI μ°μ°μ), const_cast,dynamic_cast,reinterpret_cast,static_cast
λ€μμ μ°μ°μλ€μ μ€λ²λ‘λ©νλλ° λ©€λ² ν¨μλ§ μ¬μ© κ°λ₯
=,()(ν¨μ νΈμΆ μ°μ°μ),[](λ°°μ΄ μΈλ±μ€ μ°μ°μ),->(ν΄λμ€ λ©€λ² μ κ·Ό ν¬μΈν° μ°μ°μ)
νλ λμ λμ
νλ λλ λ€μκ³Ό κ°μ μΈ κ°μ§ ννλ‘ μ¬μ©λ¨.
- νλ λ ν¨μ
- νλ λ ν΄λμ€
- νλ λ λ©€λ² ν¨μ
ν¨μλ₯Ό μ΄λ€ ν΄λμ€μ λν΄ νλ λλ‘ λ§λ€λ©΄, κ·Έ νλ λ ν¨μλ ν΄λμ€μ λ©€λ² ν¨μλ€μ΄ κ°μ§λ κ²κ³Ό λλ±ν μ κ·Ό κΆνμ κ°λλ€.
νλ λ μμ±νκΈ°
νλ λ ν¨μλ₯Ό λ§λλ 첫 λ²μ§Έ λ¨κ³λ, ν΄λμ€ μ μΈμ μνμ λ£λ κ²μ΄λ€. μ΄λ friendλΌλ ν€μλλ₯Ό μμ λΆμ΄μΌ νλ€.
friend Time operator*(double m,const Time &t);
μ΄ μνμ λ κ°μ§ ν¨μΆμ μΈ μλ―Έλ₯Ό κ°μ§κ³ μλ€.
- operator*()ν¨μλ, ν΄λμ€ μ μΈ μμ μ μΈλμ§λ§ λ©€λ² ν¨μκ° μλλ€. κ·Έλ¬λ―λ‘ λ©€λ² μ°μ°μλ₯Ό μ¬μ©νμ¬ νΈμΆλμ§ μλλ€.
- operator*()ν¨μλ, λ©€λ² ν¨μλ μλμ§λ§ λ©€λ² ν¨μμ λλ±ν μ κ·Ό κΆνμ κ°μ§λ€.
λ λ²μ§Έ λ¨κ³λ ν¨μ μ μλ₯Ό μμ±νλ κ²
λ©€λ² ν¨μκ° μλλ―λ‘ Time::μ νμλ₯Ό μ¬μ©νμ§ μλλ€. λν friend ν€μλλ μ¬μ©νμ§ μμ.
Time operator*(double m,const Time &t)
{
Time result;
long totalminutes=t.hours*m*60+t.minutes*m;
result.hours=totalminutes/60;
result.minuter=totalminutes%60;
return result;
}
μ νλ λ ν¨μλ, κ³±μ μμ μ΄λ€ κ°μ΄ λ¨Όμ λμ€λλ‘ κ³ μΉ¨μΌλ‘μ¨ νλ λκ° μλ ν¨μλ‘ μμ± κ°λ₯.
Time operator*()(double m,const Time& t)
{return t*m; //t.operator*(m)μ μ¬μ©}