一、继承访问权限测试
设计类A具有public, protected, private等不同属性的成员函数或变量;
class A
{
private:
int pri_a;
protected:
int pro_a;
public:
A();
int pub_a;
friend class C;
virtual void name() {
cout << "i am A" << endl;
}
};
类B通过public, protected, private等不同方式继承A,在类B的成员函数中测试访问A的成员函数或变量;
class B1 :virtual public A {
public:
int pub_b1 = 5;
void call() { //测试A中成员
//pri_a = 1; error
pro_a = 2;
pub_a = 3;
}
void name() { //重载A中的函数
cout << "i am B1" << endl;
}
private:
int pri_b1 = 4;
protected:
int pro_b1 = 6;
};
class B2 :protected A {
public:
void call() { //测试A中成员
//pri_a = 1; error
pro_a = 2;
pub_a = 3;
}
};
class B3 :private A
{
public:
using A::pub_a;//在B3中提升A的public成员为public
void call() { //测试A中成员
//pri_a = 1; error
pro_a = 2;
pub_a = 3;
}
};
在类A中添加public, protected, private等不同属性的成员函数或变量,在外部测试访问A的各个成员函数或变量;
A a;
cout << a.pub_a << endl;//在外部访问A的各个成员;pub_a可以访问到
//cout << a.pri_a<<a.pro_a; //error
B以private方式继承A,尝试把A中的部分public成员提升为public。
class B3 :private A
{
public:
using A::pub_a;//在B3中提升A的public成员为public
void call() { //测试A中成员
//pri_a = 1; error
pro_a = 2;