写出以下程序的运行结果 #include<iostream> class A { public: int n; }; class B: public A {}; class C: public A {}; class D: public B, public C { int getn() { return B::n; } }; void main() { D d; d.B::n = 10; d.C::n = 20; cout << d.B::n << ", " << d.C::n <<endl; }
时间: 2024-01-22 12:21:26 浏览: 141
#include <iostream>
程序的运行结果为:
```
10, 20
```
程序首先定义了一个基类 A,然后分别定义了两个派生类 B 和 C,它们都公有地继承了基类 A。接着定义了一个派生类 D,它既是类 B 的派生类,又是类 C 的派生类,并且它还定义了一个成员函数 getn(),用于返回类 B 中的 n 成员。
在主函数中,定义了一个对象 d,它的类型是类 D 的对象。然后通过 d.B::n 和 d.C::n 分别给类 B 和类 C 中的 n 成员赋值。最后输出 d.B::n 和 d.C::n 的值,结果是 10 和 20。这是因为 d.B::n 和 d.C::n 分别指定了对象 d 中来自类 B 和类 C 的成员 n,而它们分别被赋值为 10 和 20。
阅读全文