找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1550|回复: 4

类中构造函数问题

[复制链接]
发表于 2009-11-5 01:11:51 | 显示全部楼层 |阅读模式 IP:江苏扬州
#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;
}
问题在程序里
发表于 2009-11-5 01:11:53 | 显示全部楼层 IP:江苏扬州
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给定义了,是到时候再主函数里面初始化对象时传递过来的,因此无须初始化。
回复

使用道具 举报

发表于 2009-11-5 01:11:54 | 显示全部楼层 IP:江苏扬州
谢谢了哈
回复

使用道具 举报

发表于 2009-11-5 01:11:55 | 显示全部楼层 IP:江苏扬州
呵呵,楼主要是看一下类中关于函数和变量的定义方法就知道了。还有那个r,在主函数中有一个cin>>radius语句,这个r就是通过这个语句从外部输入的。所以不用给r赋值。
回复

使用道具 举报

发表于 2009-11-5 01:11:56 | 显示全部楼层 IP:江苏扬州
circle::circle(float r)是类外函数定义
radius=r;r是函数定义的形参,在调用的时候才会赋值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 09:45 , Processed in 0.189594 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表