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

结果为什么不是输入的数了

梦里仙 发布于 2012-09-18 12:17, 438 次点击
#include"math.h"
#include"iostream"
using namespace std;

class data
{
protected:
int m;
double n,p;
public:
    data(){}
data(int a,double b)
{
m=a;
n=b;
}


void buy()
{
cout<<n<<endl;
cout<<m<<endl;
}
};



int main()
{
double x,s1;
int y;
cout<<"价格:";
cin>>x;
cout<<"数量:";
cin>>y;
data z(y,x);
data w;
w.buy();
return 0;
}
4 回复
#2
眼底星空2012-09-18 13:10
对象w构造的时候是调用无参数的构造函数data(),此函数啥事没做,m,n未赋值,调用buy当然无法输出你想要的结果了。
对象z构造的时候调用的data(int a,double b)构造函数,调用z.buy()应该是你希望的结果。
#3
爱闹的娃2012-09-18 15:28
data z(y,x) 调用带有形参的构造函数。。。。data w 调用没有形参的构造函数,这里面的M N都是一些垃圾值,在调用时用z对象调用,那样就是你输入的结果....
#4
pangding2012-09-18 18:35
楼主这三行代码啥意思,能自己解释解释吗?
data z(y,x);
data w;
w.buy();

#5
梦里仙2012-09-18 20:17
谢了,各位!

#include"iostream"
using namespace std;

class data
{
protected:
int m;
double n,p;
public:
   
data(int a,double b)
{
m=a;
n=b;
}
void buy()
{
cout<<n<<endl;
cout<<m<<endl;
}
};
int main()
{
double x,s1;
int y;
cout<<"价格:";
cin>>x;
cout<<"数量:";
cin>>y;
data z(y,x);
z.buy();
return 0;
}
1