Java教程

有些运算符只能用成员函数进行重载、<<运算符只能用非成员函数进行重载

本文主要是介绍有些运算符只能用成员函数进行重载、<<运算符只能用非成员函数进行重载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

有些运算符只能用成员函数进行重载

“=” 号便是

原因:在进行赋值的时候会调用构造函数,比如int a, a = 5. 会执行两次构造函数,如果没重载"=",会调用默认的;如果重载了会调用重载后的。如果对"="用友元函数进行重载,友元函数只是类的“朋友”,不是类的成员函数,便会出现以下情景:程序会出现两种矛盾
1.认为没有重载赋值运算符的成员函数,调用相应的构造函数
2.在全局范围内,又重载了赋值运算符函数,赋值语句正好和这个函数匹配上了,也会去调用这个函数
出现了矛盾
->、[]、()同样也是这样

<<运算符只能用非成员函数进行重载

原因:运算符作为成员函数时,其左侧运算对象必须是运算符所属类的一个对象, 显然 “<<” 不是

这篇关于有些运算符只能用成员函数进行重载、<<运算符只能用非成员函数进行重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!