无法弄清楚代码在C++中崩溃的原因

0 c++

当我尝试运行代码时编译器崩溃,我找不到问题.

我收到这个错误:0xC0000005: Access violation reading location 0x00000000.所以它必须是一个指针错误.

但我似乎无法弄清楚我做错了什么.所以,如果有人可以帮助我,我将非常感激.

classB.ccp

ClassB::ClassB(ClassC *CPtr, int x)
{
    ClassC *CPtr_ = CPtr;
    x_ = x;
}

void ClassB::print() const
{
    CPtr_->print();
    std::cout << x_ << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

ClassC.ccp

ClassC::ClassC(int y)
{
    y_ = y;
}

void ClassC::print() const
{
    std::cout << y_ << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

主要

ClassC myCObject(7);
ClassB myBObject(&myCObject , 11);
myBObject.print();
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 5

在类的构造函数中,ClassB您将参数值存储CPtr局部变量中 CPtr_.你为什么这么做?

显然,这个想法是存储在数据成员CPtr_ClassB.然而,由于一些无法解释的原因,您决定在构造函数中声明一个具有相同名称的局部变量.由于该额外变量,数据成员保持未初始化(包含垃圾),并且当您尝试取消引用它时代码崩溃.