嵌套类与基础类中的派生类结交之间的区别

时间:2018-06-29 06:42:02

标签: c++ inheritance friend

以所有成员创建私人班级P和从班级派生的友善班B之间有什么区别

class P
{
private:
        int i;
        friend class B;
};

class B: public P
{
public:
        void get()
        {
                cout <<i;
        }
};

int main()
{

        B obj2;
        obj2.get();
        return 0;
}

vs

在一个类中创建一个类,以便没有人可以使用隐藏的类(子类),这样就很容易进行维护,而不必担心会破坏别人依赖的代码。

在哪种情况下,我们应从以上(或任何其他(如果有的话))中选择哪种设计?

此问题是Why would one use nested classes in C++?答案的评论部分的继续

1 个答案:

答案 0 :(得分:0)

不要按照您的建议去做:它的设计不好,并且有循环依赖的可能。请改用受保护的成员。

class P
{
protected:
    int i = 42;
};

#include <iostream>

class B : public P
{
public:
    void get()
    {
        std::cout << i << std::endl;
    }
};

int main()
{
    B Bobj;
    Bobj.get();

    std::cin.ignore();
    return 0;
}