【发布时间】:2017-03-08 01:20:30
【问题描述】:
我是 C++ 和指针的新手,我对这个 C++ 代码有疑问。通常,此代码必须显示“true”,但事实并非如此。提前致谢。
class Trie{
public:
Trie* root;
int color;
Trie(){
color=0;
}
~Trie(){
}
};
int main(){
Trie test;
if(test.root==nullptr)cout<<"true"<<endl;
}
【问题讨论】:
-
因为您从未将其设置为
nullptr。在color = 0;之后的构造函数中,写root = nullptr; -
你从来没有初始化过
test.root,当你写test.root==nullptr时你期望会发生什么? -
由于你的构造函数没有初始化root,它可以是任何东西。
-
注意空格是你的朋友。您的
if声明没有空格很难阅读。 -
如果您期望
int是 32 位整数,那您就错了(在某些平台上,int是 16 位!)。如果您需要一个 32 位整数来存储 0-255 个 RGB 值的元组,那么您应该使用显式的uint32_t或更好:定义一个包含 3xuint8_t值的元组结构。您还将获得更好的性能,因为成员将是处理器字对齐的。
标签: c++