返回信息流class ABC
{
int a,b,c;
public: ABC(int ,int,int){this->a;this->b;this->c;}
friend ostream &operator<<(ostream &out,ABC&f)
{
out<<"a="<<f.a<<"b="<<f.b<<"c="<<f.c<<endl;return out;}}
这个程序中friend ostream &operator怎么解释如果去掉friend 会提示operator参数太多什么
意思
这是一条镜像帖。来源:北邮人论坛 / cpp / #85505同步于 2015/1/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
friend ostream &operator
pingguokaile
2015/1/29镜像同步15 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
去掉friend就相当于是一个成员函数,而成员函数默认有一个this参数,所以不需要ACB&f这个参数了;但是调用的时候只能用具体的对象来当做成员函数的方式来调用。不去掉friend的话,相当与是说这个函数是一个普通的函数,只是赋予其访问class ABC内部成员的权限。
this 参数在operator中怎么用啊!不理解
【 在 libenchao 的大作中提到: 】
: 去掉friend就相当于是一个成员函数,而成员函数默认有一个this参数,所以不需要ACB&f这个参数了;但是调用的时候只能用具体的对象来当做成员函数的方式来调用。不去掉friend的话,相当与是说这个函数是一个普通的函数,只是赋予其访问class ABC内部成员的权限。
还有一个问题
class number
{ int n;
public:
number&operator++(){++n;return *this}
}
解释一下 number&operator++(){++n;return *this}这个的意思!
ostream &operator<<(ostream &out)
{
out<<"a="<<this->a<<"b="<<this->b<<"c="<<this->c<<endl;return out;}}
【 在 pingguokaile 的大作中提到: 】
: this 参数在operator中怎么用啊!不理解
number&operator++(){++n;return *this}
number&是说这个函数的返回值是number的引用类型
operator++()是说这个函数是一个操作符重载,重载的前置++
{++n;return *this} 函数体,最后返回调用该操作符的对象本身的引用。
【 在 pingguokaile 的大作中提到: 】
: 还有一个问题
: class number
: { int n;
: ...................
number 后面一般生成对象在这里number后加引用不理解啊;
还有ostream &out也不理解啊!看不懂,谢谢了!
【 在 libenchao 的大作中提到: 】
: number&operator++(){++n;return *this}
: number&是说这个函数的返回值是number的引用类型
: operator++()是说这个函数是一个操作符重载,重载的前置++
: ...................
这不就是C++中的引用么?
【 在 pingguokaile 的大作中提到: 】
: number 后面一般生成对象在这里number后加引用不理解啊;
: 还有ostream &out也不理解啊!看不懂,谢谢了!
加入我把number &operator ++(){++n;return *this;}写成operator ++(){++n;return *this;}提示缺少显示类型如int,并且*this也不对,提示不存在从number到int的转换函数
【 在 libenchao 的大作中提到: 】
: 这不就是C++中的引用么?
: