msc*_*msc 4 c++ inheritance multiple-inheritance diamond-problem c++11
这是多重继承的一个例子.我使用范围解析运算符来解决歧义而不是虚拟类.
struct A
{
int i;
};
struct B : A
{};
struct C : A
{};
struct D: B, C
{
void f()
{
B::i = 10;
}
void g()
{
std::cout << B::i <<std::endl;
}
};
int main()
{
D d1;
d1.f();
d1.g();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结构B::i良好吗?
结构
B::i良好吗?
是的.最相关的参考是[class.qual]/1:
如果qualified-id的nested-name-specifier指定了一个类,则在该类的作用域中查找在嵌套名称说明符之后指定的名称,但下面列出的情况除外.该名称应代表该类或其基类之一的一个或多个成员.
其中指定您可以i因为它是B基地的成员而命名.之后只会检查可访问性,在您的情况下,它是公开的.
...对成员的访问权限受成员命名的类的影响.这个命名类是查找和找到成员名称的类...当在类N中命名时,成员m可以在R点访问
- 存在可在R处访问的N的基类B,并且当在B类中命名时,m可在R处访问.
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |