父类:point 数据成员 构造函数 求面积函数 子类:Rectangle 数据成员 构造函数 求面积函数 普通函数fun(Point &s) 利用它调用求面积函数 主函数
时间: 2023-08-06 19:06:53 浏览: 47
好的,我理解了你的问题。这是一个关于继承的例子,父类是Point类,子类是Rectangle类。Rectangle类继承了Point类的数据成员和函数,并添加了一个新的函数fun。下面是一个示例代码,包含了Point类、Rectangle类、以及主函数:
```c++
#include <iostream>
using namespace std;
class Point {
protected:
int x, y;
public:
Point(int x, int y) {
this->x = x;
this->y = y;
}
virtual double area() { // 求面积函数
return 0;
}
};
class Rectangle : public Point {
private:
int w, h;
public:
Rectangle(int x, int y, int w, int h) : Point(x, y) {
this->w = w;
this->h = h;
}
double area() { // 求面积函数
return w * h;
}
void fun(Point &s) { // 普通函数
cout << "面积:" << s.area() << endl;
}
};
int main() {
Point p1(0, 0);
Rectangle r1(0, 0, 2, 3);
cout << "Point的面积:" << p1.area() << endl;
cout << "Rectangle的面积:" << r1.area() << endl;
r1.fun(p1);
return 0;
}
```
在上面的代码中,Point类有一个构造函数,以及一个求面积的虚函数。Rectangle类继承了Point类,并添加了一个新的构造函数、一个新的求面积函数、以及一个普通函数fun。在主函数中,我们创建了一个Point对象p1和一个Rectangle对象r1,并分别输出它们的面积。然后,我们调用Rectangle对象r1的函数fun,传入一个Point对象p1,该函数会调用Point对象p1的求面积函数,并输出其面积。
输出结果如下:
```
Point的面积:0
Rectangle的面积:6
面积:0
```
可以看到,Point对象p1的面积为0,Rectangle对象r1的面积为6,而调用Rectangle对象r1的函数fun时,传入的是一个Point对象p1,该对象的面积为0。