[英]multiple inheritance
当我们说“一个被认定为受保护的成员可以被任何从其直接派生的类访问”时,这是什么意思。 在下面的示例中,结果类可以访问get_number函数,因为该语句只能访问测试类。
class student
{
protected:
int roll_number;
public:
void get_number(int){ cout<< "hello"; }
void put_number(void) {cout<< "hello"; }
};
class test : public student
{
protected:
float sub1;
float sub2;
public:
void get_marks(float, float) {cout<< "hello"; roll_number = 10; }
void put_marks(void) {cout<< "hello"; cout << "roll_number = " << roll_number ; }
};
class result : public test
{
float total;
public:
void display(){cout<< "hello"; roll_number = 10; }
};
int main()
{
result student;
student.get_marks(2.2, 2.2);
student.put_marks();
return 0;
}
我按照第一条声明更改了代码,直到结果类都无法访问受保护的变量roll_number?
您已将get_number
声明为public,以便所有类都可以看到它。
如果您希望class result
不能直接访问数据成员roll_number
,则需要将class test
的继承访问更改为protected
:
class test : protected student
{
};
有关更多信息,请参见《 C ++ FAQ Lite:公共和私有继承》 。 更改class test
从class student
继承的方式还影响class student
派生的class test
访问class student
中的数据成员的方式。
继承的一种替代方法是,对于class test
, 只要class student
不是抽象类 , 就可以包含指向该class student
实例的私有指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.