gpt4 book ai didi

c++ - 可扩展的基类方法?

转载 作者:行者123 更新时间:2023-11-28 06:08:48 27 4
gpt4 key购买 nike

(我不确定这是否属于模板或虚拟函数或两者兼有)。

假设我们有一个只有两个值 x,y 的基类(比如 tuple2)。这个基类有一个名为“norm”的方法,它对 x,y 进行操作,例如 (sqrt(xx+yy))。

现在我们要扩展这个类:

struct tuple2
{
double x,y;
double norm () {return sqrt(x*x+y*y);}
double dotProd (const tuple2& other) {return other.x*x+other.y*y;}
}

struct tuple3:public tuple2
{
double z;
}

tuple3 添加了一个变量。

是否可以定义基类方法,使其可以在不重载的情况下处理 x、y 和 z 组合?

功能不完全相同,但具有相同的模式。我想我正在寻找某种扩展变量数量的模板,而不仅仅是类型?

最佳答案

我建议一个免费功能。你可以read an article这就是自由函数通常优于成员函数的原因。

double dotProd(const tuple2 &t1, const tuple2 &t2){
return t1.x * t2.x + t1.y * t2.y;
}

double dotProd(const tuple3 &t1, const tuple3 &t2){
return t1.x * t2.x + t1.y * t2.y + t1.z * t2.z;
}

它易于编写、易于理解、易于扩展且性能非常好。

我在 C++ 中使用继承扩展类并没有取得多大成功,因此不推荐它。

关于c++ - 可扩展的基类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31739949/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com