类继承的方法:
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;
}