【发布时间】:2011-10-12 22:00:32
【问题描述】:
这似乎是重复的,但也许它太明显了,还没有被问到......
这是检查变量(不是指针)是否在 C++ 类中初始化的正确方法吗?
class MyClass
{
void SomeMethod();
char mCharacter;
double mDecimal;
};
void MyClass::SomeMethod()
{
if ( mCharacter )
{
// do something with mCharacter.
}
if ( ! mDecimal )
{
// define mDecimal.
}
}
【问题讨论】:
-
“已定义”是什么意思?你的意思是“具有价值”作为“初始化”?
-
所有变量都有一个值(它们是被定义的)。通常编译器会将变量初始化为某个标准值,但我不确定这是否是 C++ 定义的一部分,据我所知不是。在使用它们之前初始化所有变量是一个很好的做法,这样它们就不会有一些随机或依赖于实现的值。然后您可以在使用它们之前随时检查它们的当前值。
-
@Jay,您确实需要改写您的问题以匹配 C++ 使用的单词。根据 C++ 规则,在您的示例中,mCharacter 总是在 MyClass 中定义。 'char mCharacter' 出现在那里意味着它已定义。现在您需要通过“是否定义了 mCharacter”来考虑您真正需要的内容。你的意思是,“分配给?”。 C++ 无法真正检查这一点。 “值与初始化值不同”?也许,但是,您的示例没有任何初始化值,因此您也无法检查它,除非您添加初始化程序和构造函数。在这种形式中,问题必须改写
-
为什么要区分指针?指针变量只是具有指针类型的变量。
-
随着 C++17 的出现,改变正确答案不是更好吗?