【C++】操作符重载

操作符重载,计算机学科概念,就是把已经定义的、有一定功能的操作符进行重新定义,来完成更为细致具体的运算等功能。

操作符重载可以将概括性的抽象操作符具体化,便于外部调用而无需知晓内部具体运算过程。

调用类中的操作符重载函数的方法:

当调用类中定义的操作符重载函数时最左边的对象是调用操作符重载函数的对象。

比如在类hyong中重定义的+操作符 hyong operator +(hyong m){},有类hyong的对象m和n则调用操作符重载函数的方法有m+n和

m.operator +(n),前一条语句会自动转换为后面这条语句,且m+n的表达式中最左边的对象是调用操作符重载函数的对象,而最右边的那

个将被作为参数传送。

也就是说n+m会转换成n.operator +(m)。

要记住当调用类中定义的操作符重载函数时最左边的对象是调用操作符重载函数的对象。

调用友元或独立的操作符重载函数的方法:当调用类的友元操作符重载函数或独立的操作符函数时语句m+n会转换为显示的调用方式,比

如有友元或独立操作符重载函数hyong operator +(hyong a,hyong b){}则当出现m+n时会转换成语句operator +(m,n)表达式的第一个对象

传给第一个参数,第二个对象传给第二个参数。

必须把它作为类成员函数的运算符有:(),[],->;和任何赋值运算符,重载这些运算符时必须把操作符函数声明为类的成员函数。

重载限制

并不是所有的操作符都能被重载。除了**. ,.* ,:: ,? : ,sizeof,typeid**这几个运算符不能被重载,其他运算符都能被重载

重载不能改变该运算符用于内置类型时的函义,程序员不能改变运算符+用于两个int型时的含义。

运算符函数的参数至少有一个必须是类的对象或者类的对象的引用。这种规定可以防止程序员运用运算符改变内置类型的函义。

重载不能改变运算符的优先级。

重载不能改变运算符的结合律。

重载不能改变运算符操作数的个数。比如+需要两个操作数,则重载的+也必须要有两个操作数。

微信公众号“计算机基础学”关注我哟

发布了57 篇原创文章 · 获赞 13 · 访问量 3172

猜你喜欢

转载自blog.csdn.net/qq_41985559/article/details/102097452