本文主要是介绍关于c++中的public继承,private继承,以及protect继承的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在c++中,public继承:
子类保持原有的基类的属性,比如基类为public的,子类也为public,基类为protected,子类也同样为public。但是不共享作为virtual数据类型的数据。也就是说基类的保护成员和共有成员在子类中保持原有的属性。
#include <iostream>
using namespace std;
class A
{
public:
void public_foo()
{
cout<<"public a"<<endl;
}
protected:
void protected_foo()
{
cout<<"protected_foo a"<<endl;
}
private:
void private_foo()
{
cout<<"private_foo"<<endl;
}
};
class B :public A
{
public:
void public_foot()
{
public_foo();
}
void protected_foot()
{
protected_foo();
}
protected:
};
int main()
{
B b;
b.public_foot();
b.protected_foot();
return 0;
}
在c++中,protected继承
当类的继承为protected的时候,基类的public成员和protected成员在子类中都以protected成员出现, 基类的私有成员在子类中不可以被访问。
但是类外部的派生类不可以访问,
基类的public类成员,或者是protected类成员都可以被子类访问。
但是基类的private成员始终不可以被子类访问。
#include <iostream>
using namespace std;
class A{
public:
void public_foo(){
cout<<"public_foo a"<<endl;
}
private:
void private_foo()
{
cout<<"class a privare"<<endl;
};
protected:
void protected_foo(){
cout<<"protected_foo"<<endl;
}
};
class B: protected A{
public:
void public_fooT(){
public_foo();
}
void protected_foot()
{
protected_foo();
}
//void private_foot()
//{
// private_foo(); error C2248: 'private_foo' : cannot access private member declared in class 'A'
// }
private:
protected:
};
int main()
{
B b;
b.public_fooT();
b.protected_foot();
b.private_foot();
return 0;
}
在c++中,private继承
当类的继承为private的时候,基类的所有public成员和protected成员在子类中都以private成员继承,也就是说在子类的派生类中无法访问基类中的数据类型。
并且在子类中始终无法访问基类中的private数据成员。
#include <iostream>
using namespace std;
class A
{
public:
void public_foo (){}
protected:
void protected_foo(){}
private:
void private_foo(){}
};
class B:private A
{
public:
void f_public_test() {public_foo(); }
void f_protected_test() {protected_foo(); }
// void f_private_test() {private_foo(); }
};
class C:public B
{
public:
// void c_protected_test() {protected_foo(); }
// void c_private_test() {private_foo();}
};
int main()
{
B objF;
// objF.public_foo(); error C2248: 'public_foo' : cannot access public member declared in class 'A'
// objF.protected_foo(); error C2248: 'protected_foo' : cannot access protected member declared in class 'A'
objF.f_protected_test();
objF.f_public_test();
return 0;
}
这篇关于关于c++中的public继承,private继承,以及protect继承的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!