【发布时间】:2016-05-28 02:56:28
【问题描述】:
我仍在掌握指针的过程中,为此编写了一个快速无意义的程序,以练习查找指针错误。我很困惑为什么这个示例代码会崩溃:
#include <iostream>
class VehiclePart
{
public:
VehiclePart(int);
int GetVehiclePartNumber();
private:
int partNumber;
};
VehiclePart::VehiclePart(int VehiclePartNumber)
{
partNumber = VehiclePartNumber;
}
int VehiclePart::GetVehiclePartNumber()
{
return partNumber;
}
class Vehicle
{
public:
Vehicle(VehiclePart* VehiclePart, int VehiclePartNumber);
int GetVehiclePartNumber();
private:
VehiclePart* vehiclePart;
};
Vehicle::Vehicle(VehiclePart* vehiclePart, int VehiclePartNumber)
{
vehiclePart = new VehiclePart(VehiclePartNumber);
}
int Vehicle::GetVehiclePartNumber()
{
return vehiclePart->GetVehiclePartNumber();
}
int main()
{
VehiclePart* hood = nullptr;
Vehicle car(hood, 6);
std::cout << "Hello" << std::endl;
std::cout << car.GetVehiclePartNumber();
return 0;
}
我知道有更好的方法来处理事情,就像我说的那样,这只是让我习惯指针以及为什么会发生崩溃的练习。任何帮助表示赞赏。
【问题讨论】:
-
如果你要从构造函数中调用 new,为什么你的构造函数接受
VehiclePart*? -
您需要遵循良好的命名约定以使您的代码具有可读性:例如不将变量名(第一个字母)大写,或使用下划线作为成员变量,例如 vehiclePart_