c++ - 如果我声明一个指针,类的指针成员会发生什么情况?

标签 c++ class pointers declaration

我写了下面的代码:

#include <iostream>

using namespace std;

class Node {
public:
    int id;
    Node* n;
};

int main()
{
    Node* node;
    cout << node->n;
    return 0;
}

在这种情况下,我声明了一个指针(它未初始化),但在输出中我获得了一个由“n”给出的地址。如果我不初始化指针,为什么代码会显示一个引用?

最佳答案

它是一个野指针。 VC 编译器为这些指针分配值 0xcdcdcdcd,它可能指向 RAM 中的最后一个内存(不确定)。你不应该取消引用这种指针,因为编译器会抛出内存访问违规。如果你不想将类型为 Node 的对象分配给指针,强烈建议你分配指针具有 NULL 值。在这种情况下,如果指针指向真实对象或未通过检查其地址分配,您将始终能够检查代码。

关于c++ - 如果我声明一个指针,类的指针成员会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38005066/

相关文章:

c++ - boost::phoenix::function 的问题

c++ - 包含类对象的最佳 C++ 设计是什么?

c++ - 来自静态成员函数的 sizeof C++ 类

c++ - Leetcode 28 - 实现 strStr() : question

bool 值的 C++ 短路

c++ - 指针取消引用 : actual mechanism of compiler

javascript - ES6 类超出最大调用堆栈大小

c++ - 为什么这个指针不是 NULL,尽管它从未被初始化?

C - 传递结构指针会终止程序?如何

c - strcpy 将一个项目从 dirent 转换为 char[]