Redian新闻
>
【讨论】为什么要用友员来实现算符重载?
avatar
【讨论】为什么要用友员来实现算符重载?# Programming - 葵花宝典
f*a
1
算符重载很方便,比方说:
class complex
{
public:
complex(double r, double i){
real = r, imag = i;}
complex operator +(const complex & c);//算符重载
};
为什么有人用友员来实现算符重载, 有什么好处?
class complex
{
public:
complex(double r, double i){
real = r, imag = i;}
friend complex operator +(const complex &c1, const complex &c2);//友员
};
查了好多书都没有提到有什么好处。。
avatar
f*a
2
前面一种用法 A = B + C;
可以阿,编译通过的。
avatar
o*r
3
Sorry,记错了,
当需要access两个class的 private data时用friend function.
另外,当操作符左边是class object的时候, 才会调用class member,
否则用friend function,
比如2个String相加,
String myStr;
"abcd" + myStr 最好定义friend function

【在 f********a 的大作中提到】
: 前面一种用法 A = B + C;
: 可以阿,编译通过的。

avatar
p*o
4
friend functions can also take advantage of implicit conversion. but
it is arguable whether this is good or not.

【在 o******r 的大作中提到】
: Sorry,记错了,
: 当需要access两个class的 private data时用friend function.
: 另外,当操作符左边是class object的时候, 才会调用class member,
: 否则用friend function,
: 比如2个String相加,
: String myStr;
: "abcd" + myStr 最好定义friend function

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。