| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 758 人关注过本帖
标题:类中构造函数问题
只看楼主 加入收藏
tangwen88
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-11-5
收藏
 问题点数:0 回复次数:4 
类中构造函数问题
#include <iostream.h>
const float pi=3.14159;
const float fenceprice=35;
const float concreteprice=20;
class circle
{float radius;
 public:
    circle(float r);
    float circumference();
    float area();
};
circle::circle(float r)   //没有这句无法运行,请问下这里为什么要这样写?
{radius=r;}                 //radius=r但程序从没给r赋值啊?
float circle::circumference()
{return 2*pi*radius;}
float circle::area()
{return pi*radius*radius;}
void main()
{float radius,fencecost,concretecost;
 cin>>radius;
 circle pool(radius);
 circle poolrim(radius+3);
 fencecost=poolrim.circumference()*fenceprice;
 cout<<"langanqian="<<fencecost;
 concretecost=(poolrim.area()-pool.area())*concreteprice;
 cout<<"ludaoqian="<<concretecost<<endl;
}
问题在程序里
搜索更多相关主题的帖子: 函数 构造 
2008-11-19 13:23
hitcolder
Rank: 1
等 级:新手上路
威 望:1
帖 子:124
专家分:0
注 册:2008-10-28
收藏
得分:0 
circle::circle(float r)   //没有这句无法运行,请问下这里为什么要这样写?
{radius=r;}                 //radius=r但程序从没给r赋值啊?

楼主应该去看看类函数的基本声明问题和构造,析构函数啊:
(1)(circle::circle(float r)   //没有这句无法运行,请问下这里为什么要这样写?)   //没有这句无法运行,请问下这里为什么要这样写?)这是circle类的一个构造函数,是初始化的时候使用的,由于该函数是在类的外面定义的,所以必须要用这样的形式写。如果是在类的里面定义,可以直接写成circle(float r);就可以了。
(2)({radius=r;}                 //radius=r但程序从没给r赋值啊?)  在这里r是个形式参数,在circle::circle(float r) 中已经由float r给定义了,是到时候再主函数里面初始化对象时传递过来的,因此无须初始化。

不要在你的智慧中夹杂傲慢,也不要使你们的谦卑缺乏智慧的成分。
2008-11-19 17:15
tangwen88
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-11-5
收藏
得分:0 
谢谢了哈
2008-11-19 18:13
发呆1
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-10-6
收藏
得分:0 
呵呵,楼主要是看一下类中关于函数和变量的定义方法就知道了。还有那个r,在主函数中有一个cin>>radius语句,这个r就是通过这个语句从外部输入的。所以不用给r赋值。
2008-11-19 18:15
lxlx825
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-10-8
收藏
得分:0 
circle::circle(float r)是类外函数定义
radius=r;r是函数定义的形参,在调用的时候才会赋值

为比盖茨挣得多而奋斗
2008-11-20 11:09
快速回复:类中构造函数问题
数据加载中...
 
   



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

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