-
索引运算符只能用成员运算符重载,返回值int类型 因为重载索引时,函数的第一个隐藏的默认参数为*this且只能为*this,表明指向当前对象的元素,这使得重载后,索引下标访问的也只能是当前对象中的数据元素。查看全部
-
输出运算符只能用友元函数重载,返回值ostream,且是一个引用&,关键字operator,符号<<,第一个参数是ostream对象,起名&output,输出对象coordinate,使用引用效率高&coor, 加&代表返回值是类的引用,用引用可以加快运行效率。负号返回的是一个对象的引用,加号返回的是一个对象 ostream&operator<<(ostream &output,coordinate &coor) {output<<coor.m_iX<<endl; return output; }查看全部
-
声明+号运算符的友元函数重载,返回值coordinate,其次关键字operator,写完后重载的是那个符号+,传入两个参数加数和被加数,分别给参数起名字(Coordinate c1,Coordinate c2) 然后实现一下, Coordinate operator+(Coordinate c1,Coordinate c2) {Coordinate temp(0,0)临时实例化 temp.m_iX=c1.m_ix+c2.m_iX return temp; }查看全部
-
声明+号运算符的成员函数重载,首先返回值是coordinate对象,其次要想声明一个符号的重载必须要使用关键字operator,写完后重载的是哪个符号,就写上哪个符号,作为二元运算符的重载,第一个操作数是this指针,第二个就是我们要传入的参数,故()里写上coordinate,它应该是个对象或是引用,写上一个c再加上引用符号&。 Coordinate operator+(Coordinate &c); 实现函数,讲函数声明为某个类的函数,需要加类名 Coordinate Coordinate::operator+(Coordinate &c) {Coordinate temp(0,0);临时实例化对象,传入两个坐标值一个x一个y temp.m_iX=this->m_iX+c.m_iX; return temp; } 然后再实例化两个对象 Coordinate coor1(1,2); Coordinate coor2(3,4); Coordinate coor3(0,0); coor3=coor1+coor2; cout<<coor3.getX()<<endl;查看全部
-
输出运算符不能采用成员函数重载原因:对于输出运算符来说,第一个对象必须是ostream就意味着不能是this指针不能是当前这个对象,所以当我们去重载<<这个输出运算符的时候绝对不可以通过成员函数进行重载。必须使用友元函数来进行重载。查看全部
-
++运算符的后置重载查看全部
-
一元运算符重载查看全部
-
索引运算符不可以采用友元函数重载的原因:友元函数第一个参数可以是成员函数重载的那个this指针也可以是其他的值,但是作为索引运算符来说它的第一个值必须得是this指针,因为只有第一个参数是this指针,才能够传入索引,才能够使这个索引所表达的是当前这个对象的当中的成员。查看全部
-
索引运算符不能进行友元函数重载,输出运算符不能进行成员函数重载查看全部
-
cout 是ostream类的对象,不是this指针,所以只能通过友元函数进行重载查看全部
-
注意事项查看全部
-
<<运算符定义friend ostream& operator<<(ostream &out,const 类&p); 引用ostream& operator<<(ostream &out,const 类&p) {out<<.... return out}输出运算符“<<”只能通过友元函数进行重载查看全部
-
静态的成员函数并不会传入一个隐形的this指针,所以在静态的成员函数中无法调用非静态的成员查看全部
-
Watch(Time&t):m_tTime(t)查看全部
-
运算符重载:给原有的运算符服役新的功能。运算符重载的本质就是函数的重载。关键字operator 重载方式 1,友元函数重载:在类当中定义一个友元函数,这个与友元函数函数是个全局函数通过它实现运算符的功能。 2,成员函数重载:定义一个成员函数,进行对运算符的实现 类名+引用+关键字operator+符号+括号。查看全部
举报
0/150
提交
取消