注册 登录
编程论坛 C++教室

关于类与对象的构造函数的问题

八半个桑 发布于 2016-04-20 22:04, 4120 次点击
程序代码:
//给一个圆桶刷油漆的价钱
#include <iostream>
using namespace std;
class box
{
private:
    float h;
    float r;
    float v;
    float s;
    float w;
    bool tf;
    float color[3];
    int i;
   
public:
    float volume(float h,float r);
    float zong();
    float area(float h,float r,bool tf);
    box(int z,int x,int f);
    box();
};
float box::volume(float h,float r)
{
    v = h*r*r*3.14;
    return v;
}
float box::area(float h,float r,bool tf)
{
    if (tf)
        s = 2 * 3.14*r*h + 2 * 3.14*r*r;
    else
        s = 2 * 3.14*r*h + 3.14*r*r;
    return s;

}
float box::zong()
{
    cout<<"油漆颜色(0-红色,1-蓝色,2-绿色)"<<endl;
    cin>>i;
    w = s*color[i];
    return w;
}
box::box()
{}
box::box(int z,int x,int f)
{
    color[0]=z;
    color[1]=x;
    color[2]=f;
}
void main()
{
    box m;
    float a,b,d;
    bool c;
    box(3,4,5);
    cout << "请输入该圆桶的高度和半径(单位:米):" << endl;
    cin >> a >> b;
        cout<<"该圆桶体积为"<<m.volume(a,b)<<" m3"<<endl;
    cout << "有盖子吗?(有-1,无-0)" << endl;
    cin >> c;
    m.area(a,b,c);
    d=m.zong();
    cout <<"总造价为:"<<d<<""<<endl;

}[local]1[/local]

为毛结果会是这样  哪里出问题了?
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2016-4-20 22:05编辑过]

3 回复
#2
c9742884322016-04-21 20:23
    box m(3,4,5);
    float a,b,d;
    bool c;
  //  box(3,4,5);


#3
c9742884322016-04-21 20:25
你试试  
http://baike.
1.构造函数的命名必须和类名完全相同;在java中普通函数可以和构造函数同名,但是必须带有返回值。

2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的。

3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的。

4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点。

5.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
#4
八半个桑2016-04-22 22:47
回复 2楼 c974288432
天啊,赋值都赋错了   明白了明白了
1