class Point { public: Point(); Point(double x, double y); double getX(); double getY(); private: double mX,mY; };
时间: 2023-11-21 11:06:05 浏览: 193
这是一个 C++ 的类定义,名为 Point,有两个私有变量 mX 和 mY,分别表示点的 x 和 y 坐标。类中定义了两个公有函数 getX() 和 getY(),用于获取点的坐标值。还有一个构造函数 Point(double x, double y),用于初始化点的坐标值。另外还有一个默认构造函数 Point(),如果没有传入坐标值则会默认将 mX 和 mY 初始化为 0。
相关问题
#include<iostream> using namespace std; class CPoint { private: double x,y; public : CPoint (double i,double j); double Getx(); double Gety(); double Setpoint(double i,double j); }; class CShape { public: CPoint point; virtual double Area() { return 0.0; } }; class CCircle:public CShape { public: float r; CCircle(CPoint p1,float r=2):r(r){} double Area() { return 3.14*r*r; } }; class CRect:public CShape { public: double x; double y; CRect(CPoint p1,double x=2,double y=1):x(x),y(y) {} double Area() { return x*y; } }; class CEll:public CShape { double x; double y; CEll(CPoint p1,double x=2,double y=1); double Area() { return 3.14*x*y; } }; int main() { return 0; }有什么问题?怎么改正?
这段代码存在一个问题,即CEll类的构造函数是私有的,无法在main函数中创建CEll对象。需要将CEll类的构造函数改为公有的。
修改后的代码如下:
```
#include<iostream>
using namespace std;
class CPoint {
private:
double x,y;
public :
CPoint (double i,double j);
double Getx();
double Gety();
double Setpoint(double i,double j);
};
class CShape {
public:
CPoint point;
virtual double Area()
{
return 0.0;
}
};
class CCircle:public CShape {
public:
float r;
CCircle(CPoint p1,float r=2):r(r){}
double Area()
{
return 3.14*r*r;
}
};
class CRect:public CShape {
public:
double x;
double y;
CRect(CPoint p1,double x=2,double y=1):x(x),y(y) {}
double Area()
{
return x*y;
}
};
class CEll:public CShape {
public:
double x;
double y;
CEll(CPoint p1,double x=2,double y=1):x(x),y(y){}
double Area()
{
return 3.14*x*y;
}
};
int main() {
return 0;
}
```
c++编程代码差错:#include <iostream>#include <cmath>using namespace std;class Point {public: Point(double x, double y) : x(x), y(y) {} virtual ~Point() {} double getX() const { return x; } double getY() const { return y; }private: double x; double y;};class Circle : public Point {public: Circle(double x, double y, double radius) : Point(x, y), radius(radius) {} virtual ~Circle() {} double getRadius() const { return radius; } double getArea() const { return M_PI * radius * radius; }private: double radius;};int main() { Circle c(1.0, 2.0, 3.0); cout << "Circle with center (" << c.getX() << ", " << c.getY() << ") and radius " << c.getRadius() << endl; cout << "Area: " << c.getArea() << endl; return 0;}
这段代码存在一个错误,即 Circle 类继承了 Point 类,但是我们知道 Circle 不应该是 Point 的子类,因为 Circle 拥有的属性和方法 Point 并没有。正确的做法是使用组合,即在 Circle 类中包含一个 Point 类型的对象。
以下是修改后的代码:
```
#include <iostream>
#include <cmath>
using namespace std;
class Point {
public:
Point(double x, double y) : x(x), y(y) {}
virtual ~Point() {}
double getX() const { return x; }
double getY() const { return y; }
private:
double x;
double y;
};
class Circle {
public:
Circle(double x, double y, double radius) : center(x, y), radius(radius) {}
virtual ~Circle() {}
double getRadius() const { return radius; }
double getArea() const { return M_PI * radius * radius; }
Point getCenter() const { return center; }
private:
Point center;
double radius;
};
int main() {
Circle c(1.0, 2.0, 3.0);
cout << "Circle with center (" << c.getCenter().getX() << ", " << c.getCenter().getY() << ") and radius " << c.getRadius() << endl;
cout << "Area: " << c.getArea() << endl;
return 0;
}
```
修改后的代码使用了组合,Circle 类包含了一个 Point 对象 center,这样 Circle 就拥有了自己的属性和方法。在 main 函数中,我们可以通过调用 getCenter 函数来获取 Circle 对象的中心坐标。
阅读全文