运行时未显示任何错误,但输出是这样的
f1=6.72623e-044
f2=0
f3=6.72623e-044
当我将a初始化为5时,会出现警告,就像非静态数据成员初始化程序仅可用于-std c plus plus。然后输出变为f1 = 5 f2 = 5 f3 = 10
#include<iostream>
#include<cstdio>
using namespace std;
class FLOAT
{
float a;
public:
FLOAT(){}
FLOAT(float x)
{
x=a;
}
FLOAT operator +(FLOAT f);
void display(void);
};
FLOAT FLOAT::operator +(FLOAT f)
{
FLOAT t;
t.a=a+f.a;
return t;
}
void FLOAT::display(void)
{
cout<<a<<endl;
}
int main()
{
FLOAT f1,f2,f3;
f1=FLOAT(3.6);
f2=FLOAT(5.8);
f3=f1+f2;
cout<<"f1="; f1.display();
cout<<"f2="; f2.display();
cout<<"f3="; f3.display();
return 0;
}
此构造函数没有多大意义,您正在将未初始化的a
的值分配给参数x
,该术语从不使用:]]
FLOAT(float x) { x = a; //<-- here }
我想你想要的是:
FLOAT(float x)
{
a = x; //<-- here
}