我正在学习C ++,所以请原谅我的天真。我试图构建自己的类,对象和方法 - 每个类似乎都按预期工作。但是我遇到的问题似乎是未初始化的存储(可能还有本地对象的使用?)但是我想知道如何修复它,如果确实是它的意思,或者替代。我目前的思路是,物体需要通过......但是可能会有所不同......
//header
class Car{
public:
USHORT GetMin();
void SetMin(USHORT min);
private:
USHORT itsMinPrice;
};
USHORT Car::GetMin(){
return itsMinPrice;
}
void Car::SetMin(USHORT min){
itsMinPrice = min;
}
-
void StartingPrices(){
Car Mercedes;
std::cout << Mercedes.GetMin() << "\n";
Mercedes.SetMin(50);
std::cout << Mercedes.GetMin()<< "\n";
}
int main(){
float input;
Car Mercedes;
Mercedes.SetMin(100);
StartingPrices();
std::cout << Mercedes.GetMin() << "\n";
std::cin >> input;
return 0;
}
100,50,50
debug win32 - 52428,50,100
发布win32 - 0,50,100
答案 0 :(得分:1)
在StartingPrices
函数中,您之前调用的Mercedes
对象GetMin
就是创建的对象,即与您在{{1}中创建的对象不同的对象功能。
这意味着该对象尚未将main
设置为任何内容,因此该值将为垃圾(即,您实际上无法控制的值),在这种情况下{{1}在调试和itsMinPrice
发布中。
我认为您希望将52428
对象的引用从0
函数传递到Mercedes
函数:
main
在类的StartingPrices
中设置成员的默认值也是个好主意。
答案 1 :(得分:1)
在您的Car课程中,除非您致电itsMinPrice
,否则您不会初始化您的成员变量SetMin
,这意味着如果您忘记致电{{},则可能会使用未初始化的Car实例1}}就可以了。通常,在具有某些值的类的构造函数中进行初始化是很好的,例如
SetMin
或创建一个带初始值的构造函数
Car() : itsMinPrice(0) {
}