21xrx.com
2024-12-22 16:11:08 Sunday
登录
文章检索 我的文章 写文章
C++中的类继承与组合练习题
2023-07-05 22:28:36 深夜i     --     --
C++ 类继承 组合 练习题 面向对象编程

在C++中,类的继承与组合是两种不同的实现代码复用的方式。本文将通过一些练习题来帮助读者掌握这两个概念。

1. 练习题一:设计一个图形类,包括面积和周长的计算方法,使用继承。

首先,我们需要设计一个基类,名为Shape,包括以下成员变量和方法:


class Shape {

protected:

double area;

double perimeter;

public:

virtual double getArea() const;

virtual double getPerimeter() const;

};

接着,我们可以设计一个矩形类和一个圆形类,分别继承自Shape类。它们分别的实现如下:


class Rectangle : public Shape {

private:

double width;

double height;

public:

Rectangle(double w, double h) : width(w), height(h) {}

double getArea() const override {

return width * height;

}

double getPerimeter() const override {

return 2 * (width + height);

}

};

class Circle : public Shape {

private:

double radius;

public:

Circle(double r) : radius(r) {}

double getArea() const override {

return 3.14159 * radius * radius;

}

double getPerimeter() const override {

return 2 * 3.14159 * radius;

}

};

通过继承,Rectangle和Circle类分别拥有了Shape类中的面积和周长的计算方法。

2. 练习题二:设计一个汽车类,包括品牌、型号、价格等属性,使用组合。

首先,我们需要设计一个成员类,名为CarInfo,包括以下成员变量和方法:


class CarInfo {

private:

string brand;

string model;

double price;

public:

CarInfo(const string& b, const string& m, double p)

: brand(b), model(m), price(p) {}

const string& getBrand() const return brand;

const string& getModel() const return model;

double getPrice() const return price;

};

接着,我们可以设计一个Car类,包括一个CarInfo对象作为成员变量。它的实现如下:


class Car {

private:

CarInfo info;

public:

Car(const string& b, const string& m, double p) : info(b, m, p) {}

const string& getBrand() const { return info.getBrand(); }

const string& getModel() const { return info.getModel(); }

double getPrice() const { return info.getPrice(); }

};

通过组合,Car类拥有了CarInfo类的品牌、型号、价格等属性。同时,CarInfo类也可作为其他需要这些属性的类的成员变量,实现了代码复用的目的。

综上所述,通过练习题的实现,读者可以更好地理解C++中的类继承与组合的概念和使用方法。希望读者能够通过练习,掌握更多的C++编程知识。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复