| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 423 人关注过本帖
标题:?搞不明白 五六行什么意思?
只看楼主 加入收藏
niu91
Rank: 2
等 级:论坛游民
帖 子:64
专家分:44
注 册:2009-7-25
结帖率:83.33%
收藏
已结贴  问题点数:0 回复次数:3 
?搞不明白 五六行什么意思?
程序代码:
#include<fstream>
#include<iostream>
#include<cmath>
using namespace std;
class triangle;//这一行的作用是什么
ostream& operator<<(ostream& output,triangle& obj);//这一行的作用又是什么
class triangle
{
public:
    triangle(double x,double y,double z)//构造函数传参
    {a=x;b=y;c=z;}    
    friend ostream& operator<<(ostream&,triangle&);//声明运算符<< 重载为友元函数
private:
    double a,b,c;
};
ostream& operator<<(ostream& output,triangle& obj)

{
    double p;
    cout<<"三角形的各边长是:";
    output<<obj.a<<"  ";
    output<<obj.b<<"  ";
    output<<obj.c<<"  ";
    p=(obj.a+obj.b+obj.c)/2;
    output<<"三角形的面积是:"<<sqrt(p*(p-obj.a)*(p-obj.b)*(p-obj.c));
    return output;
}
int main()
{
    triangle c1(3,4,5);
    cout<<c1<<endl;
    return 0;
}
2011-04-30 12:30
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:10 
第五行的語法叫 向前声明(forward declarations) 或者 向前引用。
下面的函数声明 operator<< 不是用了类参数吗,但那会类还没定义呢,就要求加上这么一句。这句话就是给那个函数看的。

第六行那个是函数声明。就像一般的函数可以 main 前声明, main 后定义一样。
这个函数就是在类前声明,在类后实现的。这个不是必要的,但很多人推荐这么写。有些场合这种語法必须使用。
2011-04-30 13:27
niu91
Rank: 2
等 级:论坛游民
帖 子:64
专家分:44
注 册:2009-7-25
收藏
得分:0 
那两行在VC6.0 以上的版本中是可以不写的。
在VC6.0中前六行可以这样写
#include<fstream>
#include<iostream>
#include<cmath>
using namespace std;
class triangle;//这一行的作用是什么
ostream& operator<<(ostream& output,triangle& obj);//这一行的作用又是什么
 也可以把前六行这样写成三行  
#include<fstream>
#include<iostream.h>
#include<cmath>
2011-04-30 13:37
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
你是说连 using namespace std; 都可以不要?!

声明的那两行是可以不写。本来友元函数就可以定义在类的后面。
2011-04-30 13:46
快速回复:?搞不明白 五六行什么意思?
数据加载中...
 
   



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

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