【发布时间】:2015-12-09 12:50:24
【问题描述】:
我见过这样的课程:
class Vec2D {
int i_;
int j_;
vector<double> vec;
public:
Vec2D(int i, int j): i_(i),j_(j) {vec.assign(i_*j_,0);}
double & operator() (int i, int j){return ver[j_*i+j];} // overloading
double * operator()(){return &(vec[0]); } // ???
};
我了解double & operator() 用于运算符重载。
至于double * operator()(){return &(vec[0]); },明明是用来返回一个指向第一个元素的指针,但是机制我不懂,是重载还是函数指针?
【问题讨论】:
-
@KarolyHorvath 在我看来,链接问题更关注“双运算符()()”而不是双 *运算符()()
-
@KarolyHorvath 但令人困惑的是,链接的答案表明它被用作仿函数,它既是运算符重载又是仿函数?
-
是运算符重载,允许将对象用作仿函数。
标签: c++ pointers operator-overloading