类的继承

来源:互联网 发布:中国瓷器品牌知乎 编辑:程序博客网 时间:2024/05/01 05:59

类继承的方法:

Class derived_class_name :  access    base_class_name{};

 

其中access为访问限定符。

当一个基类的访问限定符为public时,基类的所有共有成员将成为派生类的公有成员,基类的所有保护成员将成为派生类的保护成员。然而,基类的私有元素将总是为基类专有,不能被派生类访问。

       当一个基类的访问限定符为private时,基类的公有成员和保护成语将变成派生类的私有成员。也就是说,它们仍然可以被派生类的成员访问,但却不能被用户程序中既不是基类、也不是派生类的成员访问。

       当某个类成员声明为protected时,该成员将不能被程序中其他的非成员元素所访问。但有个意外,访问保护成员与访问私有成员相同——只能被该类的其他成员访问,唯一的例外发生在保护成员被继承时。在这种情况下,保护成员与私有成员具有本质的不同。

       基类的私有成员不能被程序中包括所有派生类的其他部分访问。然而,保护成员则不同。如果基类被继承为public,那么基类的保护成员将成为派生类的保护成员,因而可以被派生类所访问。

       即使继承时使用private继承,基类的保护成员变成派生类的私有成员,所以仍然可以被派生类成员访问。

       将基类继承为保护类是可行的。如果是这样,该基类的所有共有成员和保护成员将成为派生类的保护成员。保护成员、私有成员均不能在main函数中调用的。

       因此下面这个测试代码是可以通过编译的:

#include<iostream>

using namespace std;

 

class base{

protected:

       int m,n;

public:

       void set_m_n(int x,int y){m=x,n=y;}

       void show(){cout<<"m is "<<m<<'/t'<<"n is "<<n<<endl;}

};

 

class derived_class :public base{

       int mn;

public:

       void set_mn(){mn=m*n;}

       void show_mn(){cout<<mn<<endl;}

};

 

int main()

{

       derived_class cl;

       cl.set_m_n(2,5);

       cl.set_mn();

       cl.show();

       cl.show_mn();

       return 0;

}

原创粉丝点击