21xrx.com
2024-12-22 21:49:57 Sunday
登录
文章检索 我的文章 写文章
C++面向对象程序设计第三版第二章课后答案汇总
2023-07-07 10:52:38 深夜i     --     --
C++ 面向对象 程序设计 第三版 第二章 课后答案汇总

在C++编程中,理解面向对象程序设计是非常重要的。为了帮助初学者更好地掌握此技巧,C++面向对象程序设计第三版的第二章提供了很多问题和练习。为方便大家,本文将对第二章的课后答案进行汇总。

第一部分 - 题目解答

问题1:创建一个Point类。该类包括有关点的x,y坐标的私有变量,以及适当的公共构造函数和成员函数。

答案:以下是一个Point类的示例代码:

#include

using namespace std;

class Point

{

private:

  int x, y;

public:

  Point(int x = 0, int y = 0)

    this->x = x;

    this->y = y;

  int getX()

    return x;

  int getY()

    return y;

  void setX(int x)

    this->x = x;

  void setY(int y)

    this->y = y;

  void print()

  {

    cout << "(" << x << "," << y << ")";

  }

};

问题2:创建一个Rectangle类,该类包括两个Point对象,分别描述左上角和右下角。构建一个具有适当构造函数和成员函数的类。

答案:以下是一个Rectangle类的示例代码:

#include

using namespace std;

class Point

{

private:

  int x, y;

public:

  Point(int x = 0, int y = 0)

    this->x = x;

    this->y = y;

  int getX()

    return x;

  int getY()

    return y;

  void setX(int x)

    this->x = x;

  void setY(int y)

    this->y = y;

};

class Rectangle

{

private:

  Point topLeft, bottomRight;

public:

  Rectangle(Point topLeft, Point bottomRight)

    this->topLeft = topLeft;

    this->bottomRight = bottomRight;

  Point getTopLeft()

    return topLeft;

  Point getBottomRight()

    return bottomRight;

  void setTopLeft(Point topLeft)

    this->topLeft = topLeft;

  void setBottomRight(Point bottomRight)

    this->bottomRight = bottomRight;

  int Area()

  {

    int width = bottomRight.getX() - topLeft.getX();

    int height = bottomRight.getY() - topLeft.getY();

    return width * height;

  }

};

第二部分 - 练习答案

练习1:针对问题1中的Point类,创建一个构造函数,以便它可以通过另一个Point对象初始化。

答案:以下是修改后的Point类构造函数:

Point(const Point& p)

  x=p.x;

  y=p.y;

练习2:创建一个带有getter和setter方法的Circle类,该类包括私有变量x,y,r,表示圆的圆心坐标和半径。

答案:以下是一个Circle类的示例代码:

#include

using namespace std;

class Circle

{

private:

  int x, y, r;

public:

  Circle(int x = 0, int y = 0, int r = 0)

    this->x = x;

    this->y = y;

    this->r = r;

  int getX()

    return x;

  int getY()

    return y;

  int getR()

    return r;

  void setX(int x)

    this->x = x;

  void setY(int y)

    this->y = y;

  void setR(int r)

    this->r = r;

  float circumference()

  {

    return 2 * 3.14 * r;

  }

  float area()

  {

    return 3.14 * r * r;

  }

};

练习3:使用复制构造函数创建新的Square类,它是一个矩形的子类。在Square类中,将矩形的一个点和另一个点设置为相同的值,并根据需要提供其他方法。

答案:以下是一个Square类的示例代码:

#include

using namespace std;

class Point

{

private:

  int x, y;

public:

  Point(int x = 0, int y = 0)

    this->x = x;

    this->y = y;

  Point(const Point& p)

    x = p.x;

    y = p.y;

  int getX()

    return x;

  int getY()

    return y;

  void setX(int x)

    this->x = x;

  void setY(int y)

    this->y = y;

};

class Rectangle

{

private:

  Point topLeft, bottomRight;

public:

  Rectangle(Point topLeft, Point bottomRight)

    this->topLeft = topLeft;

    this->bottomRight = bottomRight;

  Point getTopLeft()

    return topLeft;

  Point getBottomRight()

    return bottomRight;

  void setTopLeft(Point topLeft)

    this->topLeft = topLeft;

  void setBottomRight(Point bottomRight)

    this->bottomRight = bottomRight;

  int Area()

  {

    int width = bottomRight.getX() - topLeft.getX();

    int height = bottomRight.getY() - topLeft.getY();

    return width * height;

  }

};

class Square : public Rectangle

{

public:

  Square(Point topLeft, int sideLength) : Rectangle(topLeft, Point(topLeft.getX() + sideLength, topLeft.getY() + sideLength))

};

以上是C++面向对象程序设计第三版第二章课后答案的汇总。通过这些练习和题目,您可以更好地理解面向对象程序设计,并将这些知识应用于实际编程中。

  
  

评论区

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