νλ λ:<<μ°μ°μμ μ€λ² λ‘λ©
<<μ°μ°μλ₯Ό μ€λ² λ‘λ©νμ¬ coutκ³Ό ν¨κ» μ¬μ©ν¨μΌλ‘μ¨ κ°μ²΄μ λ΄μ©μ μΆλ ₯ κ°λ₯
μ€λ²λ‘λ© <<μ 첫 λ²μ§Έ λ²μ
tripμ΄ Time κ°μ²΄λΌκ³ κ°μ νμ.
Time ν΄λμ€μκ² coutμ μ¬μ©νλ λ²μ κ°λ₯΄μΉλ €λ©΄, νλ λ ν¨μλ₯Ό μ¬μ©ν΄μΌ νλ€.
κ·Έ μ΄μ λ λ€μκ³Ό κ°μ ꡬ문μ΄
cout<<trip;
λ κ°μ κ°μ²΄λ₯Ό μ¬μ©νκ³ μμ§λ§, cout κ°μ²΄λ₯Ό 첫 λ²μ§Έ νΌμ°μ°μλ‘ μ¬μ©νκΈ° λλ¬Έ(cout.operator<<(trip); μ κ°λ€.)
μ¦ trip<<cout; μ²λΌ μ¬μ©ν΄μΌ ν¨ λ°λΌμ νΌλμ μ€
νμ§λ§ νλ λ ν¨μλ₯Ό μ¬μ©νλ€λ©΄, λ€μκ³Ό κ°μ΄ μ€λ² λ‘λ© κ°λ₯
void operator<<(ostream &os,const Time &t)
{
os<<t.hours<<"μκ°, "<<t.minutes<<"λΆ";
}
λ€μκ³Ό κ°μ ꡬ문 μ¬μ© κ°λ₯
cout<<trip;
μ€λ² λ‘λ© <<μ λ λ²μ§Έ λ²μ
첫 λ²μ§Έ λ²μ μ μ€λ² λ‘λ© <<μ°μ°μλ λ€μκ³Ό κ°μ ννμμ λμνμ§ μλλ€.
cout<<"μ¬ν μΌμ: "<<trip<<" (νμμΌ)\n";
cout λμ μ리
int x=5;
int y=8;
cout<<x<<y;
c++λ λ§μ§λ§μ μΆλ ₯ ꡬ문μ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ μ½λλ€. μ¦ cout<<x<<y; λ λ€μκ³Ό κ°λ€. (cout<<x)<<y;
(cout<<x)λΌλ νν μ μ²΄κ° <<yμ μΌμͺ½μ λμ¬μκΈ° λλ¬Έμ, (cout<<x)λΌλ νν μμ²΄κ° ostreamνμ κ°μ²΄μΌ κ²μ μꡬνλ€. κ·Έλμ ostream ν΄λμ€λ ostream κ°μ²΄λ₯Ό 리ν΄νλλ‘ operator<<()ν¨μλ₯Ό ꡬννκ³ μλ€. μ΄ κ²½μ°μλ νΈμΆν κ°μ²΄μΈ coutμ 리ν΄νλ€.
νλ λ ν¨μμ λν΄μλ κ°μ μ κ·Ό λ°©μμ μ·¨ν μ μλ€.
operator<<()ν¨μκ° ostream κ°μ²΄μ λν μ°Έμ‘°λ₯Ό 리ν΄νλλ‘ κ°μ νλ©΄ λλ€.
ostream &operator<<(ostream &os,const Time &t)
{
os<<t.hours<<"μκ° ,"<<t.minutes<<"λΆ";
return os;
}
μ΄ λ²μ μ operator<<()λ νμΌ μΆλ ₯μλ μ¬μ© κ°λ₯
μλ λ³νκ³Ό ν΄λμ€μ λ°μ΄ν°ν λ³ν
μλ λ°μ΄ν°ν λ³νμ λͺ»νκ² νλ explicitλΌλ μλ‘μ΄ ν€μλκ° μΆκ°λμλ€.
explicit Stonewt(double lbs); //μμμ λ°μ΄ν°ν λ³νμ νμ©νμ§ μμ
μμ±μκ° ν€μλ explicitλ‘ μ νλ κ²½μ°, λͺ μμ λ°μ΄ν°ν λ³νλ§ ν μ μλ€.
λ³ν ν¨μ(conversion function)
λ³ν ν¨μλ μ¬μ©μ μ μ κ°μ λ°μ΄ν°ν λ³νμ΄λ€.
λ°λΌμ μΌλ°μ μΈ κ°μ λ°μ΄ν°ν λ³νμ²λΌ μ¬μ©νλ©΄ λλ€.
typeName νμΌλ‘ λ³ννλ €λ©΄, λ€μκ³Ό κ°μ νμμ μ¬μ©νλ€.
operator typeName();
- λ³ν ν¨μλ ν΄λμ€μ λ©μλμ¬μΌ νλ€
- λ³ν ν¨μλ 리ν΄νμ κ°μ§λ©΄ μ λλ€
- λ³ν ν¨μλ 맀κ°λ³μλ₯Ό κ°μ§λ©΄ μ λλ€
doubleνμΌλ‘ λ³ννλ ν¨μμ μνμ λ€μκ³Ό κ°λ€.
operator double();
c++μ ν΄λμ€μ λν΄ λ€μκ³Ό κ°μ λ°μ΄ν°ν λ³ν κΈ°λ₯μ μ 곡νλ€.
- νλμ 맀κ°λ³μλ₯Ό μ¬μ©νλ ν΄λμ€ μμ±μλ, κ·Έ 맀κ°λ³μμ λ°μ΄ν°νμ ν΄λμ€νμΌλ‘ λ³ννλ λͺ λ Ήμ΄ μν μ νλ€. κ·Έλ¬λ μμ±μ μ μΈμ explicit ν€μλλ₯Ό μ¬μ©νλ©΄, μμμ λ³νμ μμ΄μ§κ³ λͺ μμ λ³νλ§ κ°λ₯νκ² λλ€.
- λ³ν ν¨μλΌκ³ λΆλ₯΄λ νΉλ³ν ν΄λμ€ λ©€λ² μ°μ°μ ν¨μλ, ν΄λμ€ κ°μ²΄λ₯Ό λ€λ₯Έ λ°μ΄ν°νμΌλ‘ λ³ννλ λͺ λ Ήμ΄ μν μ νλ€. μ΄ λ³ν ν¨μλ 리ν΄νμ μ μΈνμ§ μκ³ λ§€κ° λ³μλ μ¬μ©νμ§ μλλ€. κ°μ²΄λ₯Ό typeNameνμΌλ‘ λ³ννλ €λ©΄, κ·Έ λ³ν ν¨μλ₯Ό operator() typeName() νμμ ν΄λμ€ λ©€λ²λ‘ μ μΈνλ€. κ°μ²΄λ₯Ό μ΄λ€ λ°μ΄ν°νμ λ³μμ λμ νλ©΄, κ·Έ λ³μμ λ°μ΄ν°νμ ν΄λΉνλ λ³ν ν¨μκ° μλμΌλ‘ νΈμΆλ¨
ν΄λμ€μ λμ λ©λͺ¨λ¦¬ λμ
λμ λ©λͺ¨λ¦¬μ ν΄λμ€
static ν΄λμ€ λ©€λ²λ νΉλ³ν μ±μ§μ κ°μ§λ€. μμ±λλ κ°μ²΄ μμ μκ΄μμ΄ static ν΄λμ€ λ³μλ₯Ό λ¨ νλλ§ μμ±νλ€.
class stringBad
{
private:
char *str;
int len;
static int num_strings;
...
μλ₯Ό λ€μ΄ 10κ°μ stringBad κ°μ²΄λ₯Ό μμ±νλ©΄, 10κ°μ str λ©€λ²μ 10κ°μ len λ©€λ²κ° μκΈ°μ§λ§ num_strings λ©€λ²λ νλλ§ μκΈ΄λ€. κ·Έ νλλ₯Ό 10κ°μ stringBad κ°μ²΄κ° 곡μ νλ€.
static λ°μ΄ν° λ©€λ²λ ν΄λμ€ μ μΈ μμμ μ μΈλμ§λ§, ν΄λμ€ λ©μλ νμΌμμ μ΄κΈ°νλλ€. κ·Έ static ν΄λμ€ λ©€λ²κ° μ΄λ ν΄λμ€μ μνλμ§ λνλ΄κΈ° μν΄μ μ΄κΈ°νν λ μ¬μ©λ²μ κ²°μ μ°μ°μλ₯Ό μ¬μ©νλ€. κ·Έλ¬λ static λ©€λ²κ° μ μνμ΄λ μ΄κ±°νμ const μ΄λ©΄ ν΄λμ€ μ체μμ μ΄κΈ°ν κ°λ₯
νλ‘κ·Έλ¨μμ νλμ κ°μ²΄λ₯Ό λ€λ₯Έ κ°μ²΄λ‘ μ΄κΈ°ννλ©΄, μ»΄νμΌλ¬λ λ³΅μ¬ μμ±μλΌκ³ λΆλ₯΄λ μμ±μλ₯Ό μλμΌλ‘ λ°μμν¨λ€.
νΉλ³ λ©€λ² ν¨μ
c++λ λ€μκ³Ό κ°μ λ©€λ² ν¨μλ₯Ό μλμΌλ‘ μ 곡νλ€.
- μμ±μλ₯Ό μ ν μ μνμ§ μμμ κ²½μ° λν΄νΈ μμ±μ
- λν΄νΈ νκ΄΄μλ₯Ό μ μνμ§ μμμ κ²½μ° λν΄νΈ νκ΄΄μ
- λ³΅μ¬ μμ±μλ₯Ό μ μνμ§ μμμ κ²½μ°, λ³΅μ¬ μμ±μ
- λμ μ°μ°μλ₯Ό μ μνμ§ μμμ κ²½μ°, λμ μ°μ°μ
- μ£Όμ μ°μ°μλ₯Ό μ μνμ§ μμμ κ²½μ°, μ£Όμ μ°μ°μ (νΈμΆν κ°μ²΄μ μ£Όμλ₯Ό 리ν΄νλ€.)
λν΄νΈ μμ±μ
μ¬μ©μκ° μ΄λ ν μμ±μλ μ 곡νμ§ μμΌλ©΄, c++κ° λν΄νΈ μμ±μλ₯Ό μ 곡νλ€.
λν΄νΈ μμ±μλ νλλ§ κ°μ§ μ μλ€.
Kluck() {kluck_ct=0;} //λͺ¨νΈν μμ±μ #1
Kluck(int n=0){kluck_ct=n;} //λͺ¨νΈν μμ±μ #2
Kluck bus; // λ μμ±μμ λͺ¨λ λΆν©νλ―λ‘ μλ¨.