当前位置: 编程技术>c/c++/嵌入式
解析C++中不能重载为友元函数的四个运算符
来源: 互联网 发布时间:2014-10-18
本文导语: C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢?现在先说说赋值运算符“=”的重载C++规定赋值运算符“=”只能重载为类的非静态成员函数,而不可以重载为类的友元函数。...
C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢?
现在先说说赋值运算符“=”的重载
C++规定赋值运算符“=”只能重载为类的非静态成员函数,而不可以重载为类的友元函数。
不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象的,它只能去操作类静态数据成员。而赋值运算符“=”是基于对象操作的。
那么为什么赋值运算符不可以重载为类的友元函数?像同样都是双目运算符的+为什么它就可以呢?
在讨论这问题之前,先看一测试的程序:
代码如下:
#include
using namespace std;
class A
{
private:
int x;
public:
A(){x=99;}
A(int xx)
{
cout