Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尝试学习指针时练习程序崩溃_C++_Pointers_Crash - Fatal编程技术网

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);