繁体   English   中英

多重继承

[英]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 testclass student继承的方式还影响class student派生的class test访问class student中的数据成员的方式。

继承的一种替代方法是,对于class test只要class student不是抽象类可以包含指向该class student实例的私有指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM