2017-08-23 5 views
0

コードがスコープを入力し、オブジェクトと同じ名前の新しいオブジェクトを定義した場合、新しく定義されたオブジェクトは正しく定義されますか?次のコードのよう
を示しています
かの範囲で同じオブジェクト名を持つオブジェクトを作成するとどうなりますか

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? 
} 

、x軸は>こちらまたはNULLのですか?
gccで見ることができますが、NULLになります。しかし、VS2015ではそれはそうです。
私の質問は、標準がこの部分に対して何を言っているかということです。どうもありがとう。

答えて

0

ただしないでください。あなたがここで尋ねなければならないという事実と、答えが100%明白ではないということは、コードを読んでいる誰もがそれを混乱させることを意味します。純粋に学術的な質問のように、うまくいくかどうかを知ることは興味深いですが、任意の実際のコードでは、単純に次の操作を行います。

ClassA x; 
if (some condition) 
{ 
    ClassB y(&x); 
} 
+2

私は2番目のxはint型のx {X}のように初期化された場合の問題は、むしろだったと思います。その値が最初のxの値になるか、その値は初期化前の値になります –

+0

@AndrewKashpurが答えを修正しようとしました。今、そのむしろコメントですが、あまりにも多くのダウンボントがなければ、私はちょうどそれを残すでしょう... – user463035818

関連する問題