C++ double *() () { } 重载?
C++ double *() () { } overloading?
我见过这样的Class:
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]); }
,明明是用来return一个指向第一个元素的指针,但是我不明白其中的机制,是重载还是函数指针?
operator()
就是 function call operator.
double * operator()(){return &(vec[0]); }
为 Vec2D
定义了一个函数调用运算符 returns a double *
并且不接受任何输入。您可以在代码中将其用作
Vec2D foo;
double * bar = foo();
然后用
重载函数调用运算符
double & operator() (int i, int j){return ver[j_*i+j];}
这为 Vec2D
定义了一个函数调用运算符,即 returns 一个 double &
并接受 2 int
s。它会像
一样使用
Vec2D foo;
double & bar = foo(0, 0);
我见过这样的Class:
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]); }
,明明是用来return一个指向第一个元素的指针,但是我不明白其中的机制,是重载还是函数指针?
operator()
就是 function call operator.
double * operator()(){return &(vec[0]); }
为 Vec2D
定义了一个函数调用运算符 returns a double *
并且不接受任何输入。您可以在代码中将其用作
Vec2D foo;
double * bar = foo();
然后用
重载函数调用运算符double & operator() (int i, int j){return ver[j_*i+j];}
这为 Vec2D
定义了一个函数调用运算符,即 returns 一个 double &
并接受 2 int
s。它会像
Vec2D foo;
double & bar = foo(0, 0);