练习程序在尝试学习指针时崩溃

Practice program crashing when trying to learn pointers

本文关键字:指针 崩溃 学习 程序 练习      更新时间:2023-10-16

我仍在掌握指针的过程中,并在此过程中编写了一个快速无意义的程序,以便练习查找指针错误。我对此示例代码崩溃的原因感到困惑:

#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;
}

我知道有更好的方法来做事,就像我说的,这只是练习让我习惯指针以及为什么会发生崩溃。任何帮助,不胜感激。

Vehicle::Vehicle(VehiclePart* vehiclePart, int VehiclePartNumber)
{

请注意,构造函数有一个名为 vehiclePart 的参数。因此

    vehiclePart = new VehiclePart(VehiclePartNumber);

这最终会将构造函数的参数设置为new ed 类实例,而不是同名的类成员。

这与指针无关,但与范围界定有关。