预测以下程序的输出。
#include
using namespace std;
class A
{
protected:
int x;
public:
A() {x = 0;}
friend void show();
};
class B: public A
{
public:
B() : y (0) {}
private:
int y;
};
void show()
{
A a;
B b;
cout << "The default value of A::x = " << a.x << " ";
cout << "The default value of B::y = " << b.y;
}
(A) show( )中的编译器错误,因为x在类A中受保护
(B) show( )中的编译器错误,因为y在类b中是私有的
(C) A :: x的默认值= 0 B :: y的默认值0
(D)编译器相关答案: (B)
说明:请注意,show()是类A的朋友,因此在show()中访问A的任何成员时不应出现任何编译器错误。
B类是从A继承的,这里要注意的重要一点是友谊不是继承的。因此show()不会成为B的朋友,因此无法访问B的私人成员。
这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。