| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 686 人关注过本帖
标题:类的友元函数的问题
只看楼主 加入收藏
qddscience
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-4-22
收藏
 问题点数:0 回复次数:6 
类的友元函数的问题

这是一个时间类,友元函数是重载*操作符的,要求3*t或t*3都为合法的时间表达式。可是,怎么改这个友元函数呢?只能让t*3是合法的,3*t却不行啊?
class TIME{
long seconds;
TIME(long s):seconds(s){};
public:
friend TIME operator *(const TIME &t ,int n);
。。。。。。


TIME operator *(const TIME &t,int n)
{
return TIME(long(n*t.seconds));
}



搜索更多相关主题的帖子: 友元 函数 TIME operator seconds 
2006-05-27 08:22
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
或许应该这样
将friend TIME operator *(const TIME &t ,int n);
改为friend TIME operator *(const TIME &t ,TIME &n);
自定义的转型构造函数会把整形转化为TIME型
t*3 或 3*t 都会调用友元函数

2006-05-27 08:39
qddscience
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-4-22
收藏
得分:0 
可是n是整型变量,TIME是类啊,不行的

我屋汝嫌低不住,雕梁画阁也知宽。 大须稳择安巢处,莫道巢成却不安。
2006-05-27 08:52
偶成
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-3-4
收藏
得分:0 
你要另外再声明整数在前面的情况
friend TIME operator *(int n,const TIME &t);

几年前,丢失了求知欲,游荡在游戏世界中. 而今寻找回了求知欲,希望通过自学充实自己.努力中...
2006-05-27 08:57
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
TIME(long s):seconds(s){};
如果不用explicit修饰在参数传递时,会隐含把long型转化为TIME型

2006-05-27 09:12
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

可以转换的,不过写两个friend也可以,只是没2楼的方便,因为还可以执行t1*t2;


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-27 09:34
qddscience
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-4-22
收藏
得分:0 
可是题目规定好了,友元的原形就是friend TIME operator *(const TIME &t ,int n);
而且只说明一个友元

我屋汝嫌低不住,雕梁画阁也知宽。 大须稳择安巢处,莫道巢成却不安。
2006-05-27 11:01
快速回复:类的友元函数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036116 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved