注册 登录
编程论坛 C++教室

请各位大侠帮忙看看这个问题

hyqhero 发布于 2008-08-08 16:43, 486 次点击
#include <iostream>
class ilist {
public:
void display( ostream &os = cout );
// ...
};
void
ilist::
display( ostream &os )
{
os << "\n( " << _size << " )( ";
ilist_item *ptr = _at_front;
while ( ptr ) {
os << ptr->value() << " ";
ptr = ptr->next();
}
os << ")\n";
}

我的问题是display函数为什么非要带&os这个参数呢
写成下面这样不是很简洁  不知道加这个参数是不是有什么好处请高手指点!
#include <iostream>
class ilist {
public:
void display( );
// ...
};
void
ilist::
display( )
{
cout << "\n( " << _size << " )( ";
ilist_item *ptr = _at_front;
while ( ptr ) {
cout<< ptr->value() << " ";
ptr = ptr->next();
}
cout << ")\n";
}
谢谢各位大侠了 这是c++primary上的一个例子
3 回复
#2
xlh52252008-08-09 10:21
首先函数,没有谁一定要你带什么参数!
要看程序自己的设计水平...很明显有ostream &os 作参数,对于多种输出流都是通用的,程序的扩展性显然比直接用cout要好的多
#3
忘记喧嚣2008-08-09 12:57
如果输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率

这就是 值传递和引用传递的区别.如果都是一般的内型如 int char
这样的话两种传递差别不大.

按引用传递只是传递了一个对象的地址而已.值传递传一个副本.如果这个副本
很大的话.那么效率肯定就低了
#4
hyqhero2008-08-10 13:48
谢谢ls两位兄弟....
1