0

次のコードを検討してください。

#include <iostream>

namespace D
{
    struct S { S(){std::cout << "D::S\n";} };
}

struct S { S(){std::cout << "S\n";} };

struct X: D::S
{
    X(): S() {}        // (1)
    // X(): D::S() {}  // (2)

    void f() { S s; }
};

int main() { X x; x.f(); }

g++ からの出力は次のとおりです。

D::S
D::S

私の質問は次のとおりです。

  • (1)はどのように機能しますか-基本クラスの名前はD::S具体的には
  • (1) と (2) の両方が機能する必要がありますか?
  • S s;insideが を参照し、 をf()参照しD::Sないのはなぜ::Sですか?
4

1 に答える 1