【发布时间】:2013-09-11 12:09:24
【问题描述】:
多年没用C++,现在用test写c++项目。
当我开始调试时,我发现变量默认不初始化为零很奇怪。 例如,当我查看我的类未初始化变量(unsigned int)时,我看到它的值 3452816845 insted of expected zeo ... 那会导致单元测试中的错误。 我使用这样的初始化:
TEST_METHOD(TestPlus)
{
Entity* entity = new Entity();
entity->mCreateOperator(entity->Plus);
entity->SetContactValue(1);
entity->SetContactValue(2);
entity->mProcessLast();
Assert::IsTrue(entity->GetContactValue((1+2));
}
我有实体类的默认构造函数:
Entity::Entity(void) {/*some internal array initialization*/}
我认为当我使用 new 关键字时,所有类变量都将由 C++ 运行时初始化为 0..
我错过了什么吗?
【问题讨论】:
-
你想知道为什么你的未初始化变量没有初始化? :)
-
不是最大值,只是内存中的某个值。
-
不是随机值。显然,您在 Debug 构建中使用了 MSVC++。 3452816845 = 0xcdcdcdcd,用于初始化从堆分配的内存的值。它旨在导致错误,你假设你会得到零是错误的。你的班级不是一个豆荚。删除默认构造函数,然后重试。
标签: c++ variables initialization