c++中如何正确使用成员函数或者友元函数重载运算符

2021-02-26 14:11:06 字数 1072 阅读 2306

1楼:匿名用户

只要有一个操作

bai数是自定du义类型就可zhi以重载。都是内置类型则不允dao许重内

载,比如你重载了算数容+,编译器会乱套的。给你个例子: #include class a public: void display(){std::cout<

c++中的重载运算符<<和>>为什么是只可以为友元函数,不可是成员函数?我觉得没问题呀, 10

2楼:匿名用户

如果是重载双目来操作符(即为类源

的成员函数),就只要设置一个参数作为右侧运算量,而左侧运算量就是对象本身。。。。。。

而 >> 或<< 左侧运算量是 cin或cout 而不是对象本身,所以不满足后面一点。。。。。。。。就只能申明为友元函数了。。。

如果一定要声明为成员函数,只能成为如下的形式:

ostream & operator<<(ostream &output)

所以在运用这个《运算符时就变为这种形式了:data<

不合符人的习惯。

c++运算符重载中 重载为类的成员函数和重载为类的友元函数 的区别是什么?

3楼:匿名用户

友元函数

bai:具有与du类成员函数相同访问zhi权利的“非dao成员函数”,他可以访问类专的私有和保护成员属——通过该类对象、对象指针或其引用。

简单且一般的说:运算符重载为类的成员函数,他的参数个数会比“该运算符的操作符”少一,而运算符重载为友元函数时,他的参数与其操作个数是相同的。

4楼:匿名用户

友员函数是指来在类内说明源()也可定义的一friend 说明的 其可以像成员函数一样访问类的各个成员但是其不属于类因此其不能用this访问列如

friend void sum(int ,int);友员函数没有this指针;其运算符重载

5楼:

类的成员函数定义就在类里面,但是类的友元函数定义在其他类里面。

调用的函数不在同一个类中,它们定义也不在同一个类中。