【发布时间】:2017-08-23 07:25:04
【问题描述】:
如果代码进入一个作用域,定义了一个与外面的对象同名的新对象,新定义的对象会被正确定义吗?
如下代码所示:
class ClassB
{
ClassA* p;
ClassB(ClassA* a)
{
p = NULL;
if (a != NULL)
p = a;
}
};
ClassA x;
if (some condition)
{
ClassB x(x);
// Will x->p be NULL or it will be pointer a?
}
在 if 范围内,x-> 在这里是 NULL 还是 a?
我可以在 gcc 中看到,它将为 NULL。但在 VS2015 中似乎是一个。
所以我的问题是,标准对这部分有什么规定。非常感谢。
【问题讨论】: