单继承定义:从一个基类中派生的继承称为单继承。也可以说,单继承的派生类只有一个基类。在单继承中,一个基类可以生成多个派生类,但是每个派生类只有一个基类。
单继承派生类的定义格式:
class <派生类名>: <继承方式> <基类名>
{
<派生类新成员的定义>
};
其中<派生类名>是从一个<基类名>中派生出来的类名,并且该派生类是按指定的<继承方式>派生的。
一,单继承的公有继承
<span style="font-size:18px;">#include <iostream>
using namespace std;
class A
{
public:
void f1();//定义的公有成员函数
protected:
int j1;//保护数据成员
private:
int i1;
};
class B:public A
{
public:
void f2();
protected:
int j2;
private:
int i2;
};
int main()
{
B b;
b.f1();//可以访问
b.j1;//非法
b.i1;//非法
return 0;
}</span>
程序分析:
在公有继承时,派生类的成员函数可以访问基类中的公有成员和保护成员,
派生类的对象可以访问基类中的公有成员。
二,单继承的私有继承(默认的继承方式)
<span style="font-size:18px;">#include <iostream>
using namespace std;
class A
{
public:
void f(int i);//定义的公有成员函数
{ cout<<i<<endl; }
void g()
{ cout<<"A\n"; }
};
class B: A//默认的为私有继承方式
{
public:
void h()
{ cout<<"B\n"; }
A::f;//说明类A的成员函数f()为派生类B的公有函数
};
int main()
{
B b;
b.f(10);
b.g();
b.h();
return 0;
}
</span>
程序分析:
在私有继承时,派生类中的成员函数可以访问基类中的公有成员和保护成员,
派生类的对象都不能访问基类中的任何成员。
三,单继承的保护继承
<span style="font-size:18px;">#include <iostream>
#include <Cstring>
using namespace std;
class A
{
public:
A(const char *name1)
{ strcpy(name,name1); }
protected:
char name[80];
};
class B:protected A
{
public:
B(const char *nm):A(nm)
{}
void Print() const
{ cout<<"name: "<<name<<endl; }
};
int main()
{
B b("lu");
b.Print();
return 0;
}</span>
程序分析:
在保护继承下,派生类的成员函数可以访问基类中的公有成员和保护成员,
派生类的对象都不能访问基类的任何成员。