【发布时间】:2018-02-24 18:02:39
【问题描述】:
我的一些sn-ps代码如下
static const int s_kVar1 = 0;
static const int s_kVar2 = 1;
...
void foo()
{
MyObject *o = new MyObject();
// Is it ever possible that (o == &s_kVar1) or (o == &s_kVar2)
}
【问题讨论】:
-
你的问题好像是问
o == &s_kVar1,但是代码问的是&o == &s_kVar1。 -
顺便说一句,我认为您不明白
static在这种情况下的含义。如果这些变量的常量很重要。 -
o和&s_kVar1是指向不同类型的指针,因此无法比较。如果您说o == (MyObject*)&s_kVar1,则在具有不同大小指针的系统上可以比较相等,具体取决于类型。 -
@RaymondChen 我认为这是不必要的言语,OP想知道地址可以相等,这不是有效语法的问题。它们都可以转换为
void *。而且我不认为将int *转换为MyObject *是合法的 -
@tobi303 是迂腐的,不是代码,而是评论以显示想法
标签: c++ pointers memory static heap-memory