C++ 我使用private继承了一个构造函数,为什么我仍然能够从主函数访问它? #包括 使用名称空间std; 阶级基础{ 公众: int i; base(){ i=1; 构造函数在执行构造函数体之前会自动初始化基类和成员。私有继承不会改变这一点。它只会使类的基部分在类外部不可访问。因为调用基类构造函数的是派生类构造函数,所以私有继承itance不限制它的功能。

C++ 我使用private继承了一个构造函数,为什么我仍然能够从主函数访问它? #包括 使用名称空间std; 阶级基础{ 公众: int i; base(){ i=1; 构造函数在执行构造函数体之前会自动初始化基类和成员。私有继承不会改变这一点。它只会使类的基部分在类外部不可访问。因为调用基类构造函数的是派生类构造函数,所以私有继承itance不限制它的功能。,c++,oop,object,C++,Oop,Object,构造函数在执行构造函数体之前自动初始化基类和成员。私有继承不会改变这一点。它只是使类的基类部分在类外部不可访问。因为调用ba的是派生类构造函数se类构造函数,私有继承不限制它可以做什么。您的意思是使基类的构造函数受保护。。那么只有派生类才能使用它: #include <iostream> using namespace std; class base{ public: int i; base(){ i=1; cout<<"Base Con

构造函数在执行构造函数体之前自动初始化基类和成员。私有继承不会改变这一点。它只是使类的基类部分在类外部不可访问。因为调用ba的是派生类构造函数se类构造函数,私有继承不限制它可以做什么。

您的意思是使基类的构造函数
受保护。
。那么只有派生类才能使用它:

#include <iostream>
using namespace std;

class base{
public:
    int i;
    base(){
    i=1;
    cout<<"Base Constructor";
    }
};

class derived: private base{
    public:
    derived(){
    i=2;
    cout<<"Derived constructor";
    }
};


int main(){ 
derived c;
return 0;
}

还有一种比较流行的模式是使析构函数受保护。不过,你明白了。

你的意思是使基类的构造函数受保护。。那么只有派生类才能使用它:

#include <iostream>
using namespace std;

class base{
public:
    int i;
    base(){
    i=1;
    cout<<"Base Constructor";
    }
};

class derived: private base{
    public:
    derived(){
    i=2;
    cout<<"Derived constructor";
    }
};


int main(){ 
derived c;
return 0;
}
还有一种比较流行的模式是使析构函数受到保护。不过,你明白了

为什么我仍然可以从主功能访问它

你不是

您的主函数访问它有权访问的
派生的
构造函数

派生的
的构造函数访问
基本的
构造函数,它可以访问该构造函数

为什么我仍然可以从主功能访问它

你不是

您的主函数访问它有权访问的
派生的
构造函数


derived
的构造函数访问
base
的构造函数,后者it有权访问。

仅派生构造函数仅派生构造函数