继承和派生

1、定义CRectangle类,有length和width及求长方形面积的成员函数Area。再定义CRectangle派生类CBox,它包含新数据成员height和求长方体体积的成员函数Volume。在main函数中,使用两个类,求某长方形面积和某长方体体积。

个人实现:

#include<iostream>
using namespace std;
class CRectangle
{
public:
		CRectangle(int a ,int b)
		{
			length = a;
			width = b;
		}
	int Area()
	{
		return length * width;
	}
	int length;
	int width;
};
class CBox: public CRectangle
{
public://注意public放在顶部
	CBox(int a, int b,int c) : CRectangle(a, b),height(c)
//使用初始化列表调用父类构造函数和自身成员变量赋值
	{
		
	}
	int Volume()
	{
		return Area() * height;
	}
	int height;
};
int main()
{
	CRectangle s(10,10);
	CBox box(10,10,5);
	cout<<"长方形的面积为"<<s.Area()<<endl;
	cout<<"长方体的体积为"<<box.Volume()<<endl;

}

2,定义一图形CShape类,其中有成员数据:宽度width和高度height,带构造函数。并建立两个派生类:矩形类和等腰三角形类。派生类中都包含一函数Area,分别用来计算矩形和等腰三角形的面积。

个人实现代码:

#include<iostream>
using namespace std;
//2、定义一图形CShape类,其中有成员数据:宽度width和高度height,带构造函数。并建立两个派生类
//:矩形类和等腰三角形类。派生类中都包含一函数Area,分别用来计算矩形和等腰三角形的面积。

#include<iostream>
using namespace std;
//2、定义一图形CShape类,其中有成员数据:宽度width和高度height,带构造函数。并建立两个派生类
//:矩形类和等腰三角形类。派生类中都包含一函数Area,分别用来计算矩形和等腰三角形的面积。

class CShape
{
public:
	CShape(int a, int b)
	{
		width = a;
		height = b;
	}
	double width;
	double height;
};
class juxing :public CShape
{public:
	juxing(int a, int b) : CShape(a, b) {}
	double Area()
	{
		return width * height;
	}

};
class sanjiao :public CShape
{public:
	sanjiao(int a, int b) : CShape(a, b){}
	double Area()
	{
		return 0.5*width  * height;
	}

};
void test()
{
	juxing a(5.0,5.0);
	sanjiao b(5.0,5.0);
	cout << "矩形面积:" << a.Area() << endl;
	cout << "三角形面积:" << b.Area() << endl;


}
int main()
{
	test();
	return 0;

}

实例代码:

#include <iostream>
// CShape类定义
class CShape {
public:
    CShape(double w, double h) : width(w), height(h) {}
    virtual double Area() const = 0; // Pure virtual function
protected:
    double width;
    double height;
};
// Rectangle类定义
class Rectangle : public CShape {
public:
    Rectangle(double w, double h) : CShape(w, h) {}
    double Area() const override { // Override virtual function from CShape
        return width * height;
    }
};
// IsoscelesTriangle类定义
class IsoscelesTriangle : public CShape {
public:
    IsoscelesTriangle(double w, double h) : CShape(w, h) {}
    double Area() const override { // Override virtual function from CShape
        return 0.5 * width * height; // 对于等腰三角形,我们只需要底和高中的较小值作为宽度,然后乘以高度的一半。
    }
};
int main() {
    Rectangle rect(10.0, 5.0); // 创建一个矩形,宽度为10,高度为5
    IsoscelesTriangle tri(10.0, 5.0); // 创建一个等腰三角形,宽度(底)为10,高度为5(高)
    std::cout << "矩形的面积为: " << rect.Area() << std::endl; // 输出矩形的面积
    std::cout << "等腰三角形的面积为: " << tri.Area() << std::endl; // 输出等腰三角形的面积
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值