网站开发人员需求,我要招人在哪个网站招,闵行区地图,北京网站建设兴田德润电话多少运算符重载
class Triangular_iterator
{
public://为了不要在每次访问元素的时候都执行-1操作//此处将_index的值设为index-1#xff08;就是贴合数组的逻辑次序#xff09;Triangular_iterator(int index):_index(index-1){}bool operator(const Triagnular_iterator…运算符重载
class Triangular_iterator
{
public://为了不要在每次访问元素的时候都执行-1操作//此处将_index的值设为index-1就是贴合数组的逻辑次序Triangular_iterator(int index):_index(index-1){}bool operator(const Triagnular_iterator)const;bool operator!(const Triangular_iterator)const;int operator*()const;Triangular_iterator operator(); //前置版Triangular_iterator operator(int);//后置版//运算符重载
private:void check_integrity()const;int _index;//如果两个Triangular_iterator对象的索引值_index)相等
//这两个对象相等
inline bool Triangular_iterator::
operator(const Triangular_iterator rhs)const
{return _indexrhs._index
}//重载运算符后可以直接用于类对象
if(trian1trian2)//...//如果想将重载后的运算符作用于指针所指的类对象
//要先提领该指针取出其所指对象
if(*ptri1*ptri2)//...//重载!运算符
inline bool Triangular_iterator::
operator!(const Triangular_iteragor rhs) const
{return !(*thisrhs);
}运算符重载的规则
不可以引入新的运算符除了. .* :: ?:四个运算符其他的运算符皆可被重载运算符的操作数个数不能变二元运算符需要两个操作数一元运算符需要一个操作数运算符优先级不可改变运算符函数的参数列表中必须至少有一个参数为class类型我们没法给比如指针这种非类类型重载运算符也不能给它引进新运算符。
//重载运算符的运算符函数定义方式
inline int operator*(const Triangular_iterator)
{rhs.check_integrity();//如是一个非成员函数就没有访问私有成员的权利return Triangular::_elems[_index];
}非成员运算符的参表中会比成员函数形式定义的运算符多出一个参数即this指针该this指针隐式代表左操作数。
//递增运算符的前置版本的重载
inline Triangular_iterator Triangular_iterator::
operator()
{//前置版本_index;check_integrity();return *this;
}//递增运算符的后置版本的重载
inline Triangular_iterator Triangular_iterator::
operator( int )
{//后置版本Triangular_iterator tmp *this;_Index;check_integrity();return tmp;
}嵌套类型
typedef可以为某个类型设定另一个不同的名称。 通用形式typedef 内置类型/复合类型/class类型 new_name;
typedef Triangular_iterator iterator;iterator ittrian.begin();//错误
Triangular::iterator ittrian.begin();//正确Fibonacci::iterator iftfib.begin();
Pell::iterator pitpel.begin();
vectorint::iterator vit_elems.begin();
string::iterator sitfile_name.begin();