객체의 멤버 변수에 접근하는 함수를 아래처럼 선언할 수 있다.
class complex{
double r, i;
...
friend double& real(complex& c)
}
inline double& real(complex& c) { return c.r }
inline double& real(complex& c) { return c.real(); }
double sum = 0.0;
for (int i=0; i<v.size(); ++i){
sum += v[i];
}
class vector {
public:
double operator[](int i)
{
assert(i >= 0 && i < my_size>);
return data[i];
}
}
위 경우 vector의 []
operator 오버로딩을 이용해 data
에 직관적으로 접근하게 해준다.
2.6.2 예제에서 vector v
가 const로 사용된다. 이 경우 아래와 같이 작성하는 것이 좋다.
class vector {
public:
double operator[](int i) const
{
assert(i >= 0 && i < my_size>);
return data[i];
}
}