回 帖 发 新 帖 刷新版面

主题:两个程序的比较

[size=3]#include <iostream>
using namespace std;
class Rectangle
{
public:
    Rectangle(float len,float width)
    {
        Length=len;
        Width=width;
    }
    float GetArea() {return Length*Width;}
    float GetLength() {return Length;}
    float GetWidth() {return Width;}
private:
    float Length;
    float Width;
};
void main()
{
    float Length,Width;
    cout<<"请输入矩形的长度:"<<endl;
    cin>>Length;
    cout<<"请输入矩形的宽度:"<<endl;
    cin>>Width;
    Rectangle r(Length,Width);
    cout<<"长为:"<<Length<<"宽为:"<<Width<<"的矩形面积为:"<<r.GetArea()<<endl;
}[/size]
[color=800000]请输入矩形的长度:
25
请输入矩形的宽度:
25
长为:25宽为:25的矩形面积为:625[/color]


#include <iostream>
using namespace std;
class Rectangle
{
public:
Rectangle(float Length,float Width) {};
float GetArea() {return Length*Width;}
float GetLength() {return Length;}
float GetWidth() {return Width;}
private:
float Length;
float Width;
};
void main()
{
float Length,Width;
cout<<"请输入矩形的长度:"<<endl;
cin>>Length;
cout<<"请输入矩形的宽度:"<<endl;
cin>>Width;
Rectangle r(Length,Width);
cout<<"长为:"<<Length<<"宽为:"<<Width<<"的矩形面积为:"<<r.GetArea()<<endl;
}

[color=008000]请输入矩形的长度:
25
请输入矩形的宽度:
25
长为:25宽为:25的矩形面积为:1.15292e+016
[/color]


[color=000080][size=1]请问,这两个程序有什么不同,为什么运行结果会不一样啊?[/size][/color]

回复列表 (共5个回复)

沙发

后面的代码构造函数不对,构造用的两个参数没有被读进对象里

板凳

就是构造函数不同啊!

3 楼


Rectangle(float Length,float Width){}这个构造函数不能把你输入的数值赋给对象里的数据成员,你的想法很好,但是不可行。

4 楼

不会吧,eclipse可以启动多个程序的,你那样运行程序,在debug视窗里应该能看到两个进程的你可以用debug方式启动看看,两个都可以设断点跟踪调试的,所以应该没问题如果你说是控制台只响应一个进程,这倒是有可能的,但实际上应该是两个进程交互使用控制台,只是切换太快,所以你只看到一个

5 楼

你构造函数传变量给对象却忘了用参数给属性赋值。不是变量同名了数据就自动传递了

我来回复

您尚未登录,请登录后再回复。点此登录或注册