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