本篇介绍C++的类的继承特性。
1.派生类不能继承基类的构造函数、析构函数和拷贝构造函数;基类的重载运算符;基类的友元函数。
2.继承类型:几乎不使用 protected 或 private 继承,通常使用 public 继承。
1)公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
2)保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
3)私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
3.多继承:即一个子类可以有多个父类,它继承了多个父类的特性。
/*
* Author:W;
* 类的继承
* 1.派生类不能继承基类的构造函数、析构函数和拷贝构造函数;基类的重载运算符;基类的友元函数。
*
* 2.继承类型:几乎不使用 protected 或 private 继承,通常使用 public 继承。
* 1)公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,
*基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
* 2)保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
* 3)私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
*
* 3.多继承:即一个子类可以有多个父类,它继承了多个父类的特性。
*/
//引入头文件:头文件包含了程序中必需的或有用的信息
#include <iostream>
using namespace std;
/*基类1:房子*/
class House
{
public:
void setWidth(float wid);
void setHeight(float hei);
protected:
float width;
float height;
};
//设置宽度
void House::setWidth(float wid)
{
width = wid;
}
//设置高度
void House::setHeight(float hei)
{
height = hei;
}
/*基类2:装修成本计算*/
class PaintCost
{
public:
float getCost(float area);
};
//装修成本计算
float PaintCost::getCost(float area)
{
return area * 45;
}
/*别墅*/
class Villa:public House,public PaintCost
{
public:
float getArea();
};
//获取别墅的装修面积
float Villa::getArea()
{
return width * height;
}
//main程序执行入口函数
int main()
{
Villa villa;
villa.setWidth(75.5);
villa.setHeight(25.5);
float areaSize = villa.getArea();
cout << "别墅的装修面积S = " << areaSize << endl;
float cost = villa.getCost(areaSize);
cout << "别墅的装修成本:" << cost << endl;
}
运行结果如下: