C++ 为什么子类的私有成员函数可以从父类调用?

C++ 为什么子类的私有成员函数可以从父类调用?,c++,inheritance,access-modifiers,C++,Inheritance,Access Modifiers,我希望他在下面的代码中给出一个错误,但是 A如何能够访问私有成员、构造函数A和B的打印?尝试新建一个B类实例,它将编译错误 B B 您看到“Compiles ok”链接了吗?这是因为您没有实例化模板类。在强制为具有特定版本的T的生成代码之前,不能在中生成编译器错误。必须查看链接。它根本不编译。我们将研究标准。在编辑链接以创建B实例后,该链接会给出一个错误,如果没有该错误,编译将成功 class B; template<typename T> class A { privat

我希望他在下面的代码中给出一个错误,但是


A如何能够访问私有成员、构造函数A和B的打印?

尝试新建一个B类实例,它将编译错误

B B


您看到“Compiles ok”链接了吗?这是因为您没有实例化模板类。在强制为具有特定版本的T的生成代码之前,不能在中生成编译器错误。必须查看链接。它根本不编译。我们将研究标准。在编辑链接以创建B实例后,该链接会给出一个错误,如果没有该错误,编译将成功
class B;

template<typename T>
class A
{
    private: 
    A()
    {
       T b;
       b.print();
    }

    void print()
    {

    }
 };

 class B: public A<B>
 {

 };