我遇到运算符重载问题。 Bool运算符正常工作,但其余的只是没有将正确的值传递给指定的对象。问题是,在使用this
运算符并显示Island
的区域后,而不是“正常数字”,我会得到类似-9.25596e+061
的内容。 Area是Island
类的属性。请帮忙。
这是这些运算符和其余代码的声明:
Island operator + (const Island &island); // declaration in header file
Island& operator += (const Island &island);
Island Island::operator + (const Island &island) // in .cpp file
{
Island Sum(); // default constructor which set area to 1
Sum.area = area + island.area;
return Sum;
}
Island & Island::operator += (const Island &island)
{
area += island.area;
return *this;
}
所以在main函数中我默认构造函数创建了3个岛,我想测试我的运算符。 displayArea()是Island类的一个方法。
Island2 += Island1; // operator +=
Island.displayArea();
Island3 = Island1 + Island2; //operator +
Island3.displayArea();
这是默认的构造函数和类。
Island::Island()
{
islandName = "Name";
double area = 1;
}
class Island{
double area;
string islandName;
public:
Island(); //constructor
displayArea();
答案 0 :(得分:0)
问题可能是您没有在area
的默认构造函数中正确设置Island
字段的值。只是猜测。
area
,并且根本不影响实例的变量。默认构造函数应该如下所示:
Island::Island() : area(1), islandName("Name") { }
请注意成员初始化的顺序 - 通常,按照声明成员的顺序初始化成员是一种很好的做法。