C++ 尝试学习指针时练习程序崩溃
我仍然在掌握指针的过程中,为了练习查找指针错误,我编写了一个快速而无意义的程序。我不明白为什么这个示例代码会崩溃:C++ 尝试学习指针时练习程序崩溃,c++,pointers,crash,C++,Pointers,Crash,我仍然在掌握指针的过程中,为了练习查找指针错误,我编写了一个快速而无意义的程序。我不明白为什么这个示例代码会崩溃: #include <iostream> class VehiclePart { public: VehiclePart(int); int GetVehiclePartNumber(); private: int partNumber; }; VehiclePart::VehiclePart(int VehiclePartNumber) {
#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;
}
#包括
类车辆零件
{
公众:
车辆零件(国际);
int GetVehiclePartNumber();
私人:
内部零件号;
};
车辆部件::车辆部件(内部车辆部件号)
{
零件号=车辆零件号;
}
int VehiclePart::GetVehiclePartNumber()
{
返回零件号;
}
等级车辆
{
公众:
车辆(车辆部件*车辆部件,国际车辆部件号);
int GetVehiclePartNumber();
私人:
车辆部件*车辆部件;
};
车辆::车辆(车辆部件*车辆部件,内部车辆部件号)
{
车辆部件=新车辆部件(车辆部件号);
}
int Vehicle::GetVehiclePartNumber()
{
返回vehiclePart->GetVehiclePartNumber();
}
int main()
{
车辆部件*发动机罩=零位PTR;
汽车(发动机罩,6);
标准::cout
请注意,构造函数有一个名为vehiclePart
的参数
vehiclePart = new VehiclePart(VehiclePartNumber);
这最终将构造函数的参数设置为new
ed类实例,而不是相同名称的类成员
这与指针无关,但与作用域有关。如果要从构造函数调用new,为什么构造函数会采用VehiclePart*
?您需要遵循良好的命名约定,以使代码可读:比如不大写变量名(第一个字母),或对成员变量使用下划线,如vehiclePart_
vehiclePart = new VehiclePart(VehiclePartNumber);