μ°μ°μ λ€μ€μ μ
- C++μ μ μλ μ°μ°μλ₯Ό μ¬μ©μκ° μ μΈν ν΄λμ€μ κ°μ²΄μ λνμ¬ μ¬μ©ν μ μλλ‘ μ μνλ κ²
μ£Όμμ¬ν
- μ°μ°μ μλ―Έλ₯Ό μμλ‘ λ³κ²½νμ§ μλλ€
- μ°μ°μ κ³ μ ν νΉμ±μ΄ μ μ§λλλ‘ νλ€
- λ€μ€μ μλ₯Ό ν μ μλ μ°μ°μ
- λ©€λ² μ ν μ°μ°μ (.)
- λ©€λ²μ λν ν¬μΈν° μ°μ°μ (.*)
- μ ν¨λ²μ κ²°μ μ°μ°μ (::)
- 쑰건 μ°μ°μ (? :)
λ¨ν μ°μ°μμ λ€μ€μ μ
- νΌμ°μ°μκ° 1κ°μΈ μ°μ°μ
μ μ νκΈ°λ² λ¨ν μ°μ°μμ λ€μ€μ μ
class IntClass1 {
int a;
public:
IntClass1(int n=0) : a(n) {} //μμ±μ
IntClass1& operator ++ () { //μ μ νκΈ° ++ μ°μ°μ λ€μ€μ μ
++a;
return *this;
}
int getValue() const { return a; }
};
IntClass1 i;
cout << (++i).getValue() << endl; // μΆλ ₯ : 1
νμ νκΈ°λ² λ¨ν μ°μ°μμ λ€μ€μ μ
- μμ
- μλμ μμ μμ λ§€κ°λ³μ intλ μΈμ μ λ¬μ μλ―Έκ° μλλΌ νμ νκΈ°λ²μ μ¬μ©νλ λ¨ν μ°μ°μμμ λνλ
class IntClass2 {
int a;
public:
IntClass2(int n=0) : a(n) {} //μμ±μ
IntClass2 operator ++ (int) { //νμ νκΈ° ++ μ°μ°μ λ€μ€μ μ
IntClass2 tmp(*this);
++a;
return tmp;
}
int getValue() const { return a; }
};
IntClass2 i;
cout << (i++).getValue() << endl; // μΆλ ₯ : 0
μ΄ν μ°μ°μμ λ€μ€μ μ
- μμ : complex2Obj1 + complex2Obj2
Complex2 Complex2::operator + (const Complex2 &c) const
{
Complex2 tmp(*this);
tmp.rPart += c.rPart;
tmp.iPart += c.iPart;
return tmp;
}
- return Complex2(rPart + c.rPart, iPart + c.iPart);
μ€νΈλ¦Ό μΆλ ₯ μ°μ°μ (<<) λ€μ€μ μ
- μμ
- νΌμ°μ°μμ private λ©€λ²λ₯Ό μμ λ‘κ² μ¬μ©ν μ μλλ‘ friend μ§μ
class Complex2 {
...
friend ostream& operator << (ostream &os, const Complex2 &c);
};
ostream& operator << (ostream& os, const Complex2& c)
{
os << "(" << c.rPart; //μ€μλΆ μΆλ ₯
if (c.iPart > 0) //νμλΆ μΆλ ₯
os << "+j" << c.iPart;
else if (c.iPart < 0)
os << "-j" << -c.iPart;
os << ")";
return os;
}
#include <iostream>
#include "Complex2.h";
using namespace std;
int main()
{
Complex2 a(10, 20);
Complex2 b(5, -3);
cout << a << "+" << b << "=" << a+b << endl;
return 0;
}
(10+j20) + (5-j3) = (15+j17)