从未初始化的 C++ 指针仍输出为已初始化
c++ pointer never initialized still outputs as initialized
我所做的只是声明一个指针,然后检查它是否指向任何东西:
#pragma once
#include <Node.h>
#include <stdio.h>
template <class NodeDataType>
class LinkedList
{
typedef Node<NodeDataType>* pNode;
private:
pNode pHead;
pNode pTail;
public:
void Add(NodeDataType* pNodeTypeData)
{
if(pHead)
{
printf("phead is initializedn");
}
else
{
printf("phead is not initializedn");
}
}
};
然后,在main()
中,我正在创建一个新的 LinkedList 对象,并调用 Add
但是当我运行它时,它会输出pHead is initialized
?但我从未初始化过它?
有人可以向我解释一下吗?
谢谢
(主(
#include <stdio.h>
#include <LinkedList.h>
#include <GameObject.h>
int main(int argc, char** argv)
{
LinkedList<GameObject> meList;
meList.Add(new GameObject());
return 0;
}
您不会在构造函数或就地初始化pHead
或pTail
。因此,当您创建LinkedList
对象时,这些成员将具有任意值。因此,要么编写构造函数:
LinkedList()
:pHead(NULL), pTail(NULL)
{
}
或者,如果您使用的是 c++11,请就地初始化它们:
private:
pNode pHead = nullptr;
pNode pTail = nullptr;
相关文章:
- 为什么两种不同的对象初始化方式给出不同的输出
- C++ - 输出与初始化变量不同?
- 如何使用函数的输出初始化 const 数组结构字段?
- 在MSDOS编译器上,用大于最大值的值初始化int时输出混乱
- SRAND 不会每次都初始化新输出
- 如何初始化文件中的文本并将其传递给类数组,以便在c++中输出
- 如何初始化可以设置为默认数组并将输入/输出作为数组的类函数?
- 从未初始化的 C++ 指针仍输出为已初始化
- 不正确的输出和变量未用Eclipse CDT初始化构造函数
- Visual Studio 编译的程序在尝试减小输出大小后无法正确初始化
- 初始化时 num 的哪个值会给这个嵌套循环一个"true"输出?
- C 在代码中初始化字符串变量时无控制台输出
- 初始化类函数,但输出仍为 0
- 初始化,然后单行输出
- 在Rcpp中初始化NumericMatrix类成员后未收到的输出
- C++:Xcode中未初始化的变量输出为0
- 动态初始化的 2D 数组输出错误
- 如何初始化指向输出缓冲区长度的指针
- -858993460输出一个未初始化的变量
- 在初始化输出后获取控制台大小