| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 929 人关注过本帖
标题:类的一点小问题,谢谢啊
只看楼主 加入收藏
zhj123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2010-8-31
结帖率:90.91%
收藏
已结贴  问题点数:6 回复次数:10 
类的一点小问题,谢谢啊
程序代码:
//计算圆的面积和周长的类的用法

#include<iostream>
using namespace std;
class Circle
{
public:
    float radius;
    float area();
    float perimeter();
};
float Circle::area()
{
    return 3.14159*radius*radius;
}
float Circle::perimeter()
{
    return 2*3.14159*radius;
}
void main()
{
    Circle c;
    float areaOfc,perimeterOfc;
    cout<<"请输入圆的半径";
    cin>>c.radius;
   
    if(c.radius>0)
    {
        areaOfc=c.area();
        perimeterOfc=c.perimeter();
        cout<<"半径为"<<c.radius<<"的圆的面积为:"<<areaOfc<<endl;            //这里怎么不能直接用c.area() 和c.perimter()。自己试了一下输出是半径,不是圆的面积和周长

         cout<<"半径为"<<c.radius<<"的圆的周长为:"<<perimeterOfc<<endl;         
    }
    else
        cout<<"圆的半径不能为负!\n";
}

2010-12-16 21:19
沧声笑
Rank: 1
等 级:新手上路
帖 子:36
专家分:9
注 册:2010-9-27
收藏
得分:2 

帮你改了下,不知道是不是符合你的要求
#include<iostream>
using namespace std;
class circle
{  
    float radius;
   public:
    circle(float r) {radius=r;}
    float area() {return 3.14159*radius*radius;}
    float perimeter() {return 2*3.14159*radius;}
};
 main()
 {  float r;
   
    cout<<"请输入圆的半径";
    cin>>r;
    circle c(r);
    if(r>0)
    {
         cout<<"半径为"<<r<<"圆的面积为:"<<c.area()<<endl;           
         cout<<"半径为"<<r<<"圆的周长为:"<<c.perimeter()<<endl;         
    }
    else
        cout<<"圆的半径不能为负!\n";
}

2010-12-16 21:47
zhj123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2010-8-31
收藏
得分:0 
回复 2楼 沧声笑
是的,就这个。请问下,这个区别在哪里啊?我打的那个是我们课本上的例题,用areaofc和perimeterofc就只是作为一个函数的调用吗?
2010-12-16 22:04
zhj123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2010-8-31
收藏
得分:0 
float radius是类circle的什么类型,不用public也可以?
2010-12-16 22:07
沧声笑
Rank: 1
等 级:新手上路
帖 子:36
专家分:9
注 册:2010-9-27
收藏
得分:0 
区别??你是说什么的区别,这个的确就是函数调用,类的题目多练练,多看源码,力求懂的它的意思就好做的

2010-12-16 22:07
沧声笑
Rank: 1
等 级:新手上路
帖 子:36
专家分:9
注 册:2010-9-27
收藏
得分:0 
回复 4楼 zhj123
额,你课本上没写,private直接放在类名后面的时候,private可以直接省略不写吗??float radius就是私有成员,只不过是省略了private

2010-12-16 22:10
zhj123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2010-8-31
收藏
得分:0 
回复 6楼 沧声笑
哦,原来这样啊!看来书是不能就只看一本的啊!咯咯,谢谢了啊
2010-12-17 12:33
zhj123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2010-8-31
收藏
得分:0 
还是有点不明白,课本为什么不直接这样呢?       cout<<"半径为"<<r<<"圆的面积为:"<<c.area()<<endl;           
                                               cout<<"半径为"<<r<<"圆的周长为:"<<c.perimeter()<<endl;   

为什么还这样麻烦呢?      areaOfc=c.area();
                          perimeterOfc=c.perimeter();
                          cout<<"半径为"<<c.radius<<"的圆的面积为:"<<areaOfc<<endl;           
                          cout<<"半径为"<<c.radius<<"的圆的周长为:"<<perimeterOfc<<endl;
2010-12-17 12:38
Lyone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:99
专家分:195
注 册:2010-12-7
收藏
得分:2 
回复 8楼 zhj123
同问~
再定义一个float型变量,和直接用函数返回的变量有什么不同呢?
难道只是为了增加程序的可读性?或是某种习惯?
2010-12-18 13:09
df19861017
Rank: 2
等 级:论坛游民
帖 子:15
专家分:29
注 册:2010-9-30
收藏
得分:2 
可以直接调用c.area() 和c.perimter(),没问题啊!
2010-12-18 21:45
快速回复:类的一点小问题,谢谢啊
数据加载中...
 
   



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

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