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

很简单的例题,但是看不懂,翻前面的内容也还是找不到答案

yp456 发布于 2007-07-27 01:21, 1005 次点击
书上的例题,笔者的写法让人头痛,老爱用sample做函数名,不过确实能让基本功扎实些,锻炼理解能力.请高手把红色部分的疑问解答下.先谢谢了.


#include <iostream.h>
class sample
{
int n;
public:
sample()
{
n=0;
}
sample(int i)
{
n=i;
}
friend sample square(sample);\\\\\\\\square 前面加个sample什么意思?函数也能定义成类?蓝色的就更晕了,这个参数到底是类还是其他什么类型?\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\是private里的n么??
void display()
{
cout<<"n="<<n<<endl;
}
};
sample square(sample x)
{
int tmp=x.n*x.n;
return sample(tmp);\\\\\\\\这个返回值又是什么???
}
void main()
{
sample a(5),b;
b=square(a);
b.display();
}
10 回复
#2
leeco2007-07-27 01:24
你认为函数的返回值不能是sample类型吗?函数的参数不能是sample类型吗?
#3
yp4562007-07-27 01:26
回复:(leeco)你认为函数的返回值不能是sample类型吗...

你说的这2个我接受,但是函数定义的时候,函数名前加个sample什么意思?

#4
yp4562007-07-27 01:35

函数类型也可以是类?彻底晕了,完全粉碎了我对计算机语言的理解啊~~~~

[此贴子已经被作者于2007-7-27 1:38:51编辑过]

#5
Arcticanimal2007-07-28 12:16
楼主对计算机语言的理解还是粉碎了的好
#6
leeco2007-07-28 12:29
你认为函数类型和函数的返回值类型有什么区别吗?你想一下,然后我告诉你我认为没有区别。
#7
野比2007-07-28 18:46
兄弟, 这里的sample不是函数... 是类....
那么大的class sample... 眼神也忒差了...
#8
cy_forever2007-07-28 21:54
回复:(yp456)很简单的例题,但是看不懂,翻前面的内容...

friend sample square(sample); 此句声明一个友员函数,返回值和参数类型都是sample类类型;

return sample(tmp); 此句是返回sample类型的值,调用了sample(int i)构造函数。

#9
醉生梦死2007-08-21 20:48
#10
yjld3d2007-08-21 21:08
我同意8楼的说法
#11
使者2007-08-21 22:00
friend sample square(sample);\\\\\\\\square 前面加个sample什么意思?函数也能定义成类?蓝色的就更晕了,这个参数到底是类还是其他什么类型?\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\是private里的n么??
friend 返回值类型 函数名 (形参类型 )   //显然这里的类型都是上面定义的sample类;


return sample(tmp);\\\\\\\\这个返回值又是什么???
即在内存中临时创建一个sample对象(参数是tmp,即此时这个sample对象中的n是tmp的值.),然后作为函数square的返回值.
1