📜  C ++ |朋友关键字|问题1

📅  最后修改于: 2021-06-01 03:12:20             🧑  作者: Mango

预测以下程序的输出。

#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基础课程》。