【发布时间】:2021-09-27 09:33:28
【问题描述】:
他们要求我实现一个通用的多态性来打印长度,我不知道该怎么做。我认为对于多态性,它必须不止一个类,但他们只要求 onw 类
#include <iostream>
using namespace std;
class Line {
private:
double x1, x2;
double y1, y2;
double z1, z2;
double length;
public:
Line(double a, double b, double c, double d, double e, double f):x1(a), x2(d), y1(b), y2(e), z1(c), z2(f){
length = sqrt(pow(x2-x1, 2) + pow(y2-y1, 2) + pow(z2-z1, 2));
}
~Line(){cout << endl << "destroying line";}
};
int main() {
Line line1(2,3,4,9,7,12);
Line line2(12,16,7,25,32,16);
Line line3(5,2,13,24,18,15);
}
【问题讨论】:
-
我猜要求是实现一个返回长度的虚拟方法。
virtual将允许子类重载它(又名多态性)。您正在设置多态性功能。 -
不只是你,我也很困惑。你能发布你的确切要求吗?
-
仅供参考,
x * x通常比pow(x, 2)更有效。另外pow函数返回的是floading point,所以来回转换时可能会有些不准确。 -
另外,您需要将析构函数声明为
virtual以帮助支持多态性。 -
我从未听说过“通用多态性”,但显然它与“参数多态性”相同。参数多态性的一个典型示例(排序)是 STL 算法(按类型参数化,适用于任何类型的迭代器范围)。在这种情况下,您如何“实施”这样的概念并不完全清楚。此代码中没有任何类型参数。也许他们希望您将
Line转换为模板,并将double转换为其类型参数。或者他们可能想要print_length函数模板的类型参数。
标签: c++ function class constructor polymorphism