次のコードを検討してください。
#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
ですか?