gpt4 book ai didi

c++ - 一组根据操作数类型而不同名称的函数可以在C语言中称为理论上的静态多态吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:39:44 24 4
gpt4 key购买 nike

是否一组函数只做一个词但名称不同,如 atoiatolatoll 等理论上称为多态?

例如,我有一个函数 swap 需要对不同类型的数据进行操作。所以我有一个函数/操作,我有不同的实现,但不幸的是,因为语言不支持使用相同的函数名称,为了获得这样的功能,我需要制作变体 swap_iswap_l swap_fswap_str 等等,必须根据操作数手动调用它们。

在设计代码时,人们会将其设计为一个函数,具有不同的实现,根据操作数调用。但在这种情况下,程序员而不是编译器需要对函数进行静态绑定(bind)。如果程序员用 C++ 实现它,那么设计将是相同的(因为他/她遵循了 OOD 方法),但在这种情况下,静态绑定(bind)可以由编译器完成,而不会打扰用户。

现在,如果在设计方法中 swap 是一个多态函数,那么 C 和 C++ 设计实现中的这种差异是否会产生差异,因此我们不能称这样的 C 实现不是多态的,并且C++ 实现多态 ?

编辑 1:

另一个例子:

假设我们发送一个包含不同可能数据类型的 union ,以及一个用变量包装它的结构,该变量指示要使用 union 的哪个组件。然后我们可以只使用一个函数名 swap 而没有变体。我们在函数中接收到结构体后,就可以在内部根据 union 体中激活的数据类型进行操作

  struct _generic {
int type;
union {
int a;
float b;
char c;
} component;
} variable;

swap (struct _generic var2, struct _generic var1)
{
if (var1.type == INTEGER)
{
/* code for integer */
}
else if (var1.type == FLOAT)
{
/* code for float */
}
.
.
.
}

在这种情况下,我们使用另一种方式。

还要注意省略号运算符 ... 就像在 printf 中一样,我们也可以获得一些内置功能。<​​/p>

重点是,C语言并没有直接提供OOD的实现,但是我们能不能在C的实现上用OOD术语来实现,如果是按照一个object来设计的面向设计?

最佳答案

假设差异是两个字符、三个字符还是十个字符?不同的函数会是多态的吗?我会说,不,他们不会。那么1个字符有什么特别之处呢?

关于c++ - 一组根据操作数类型而不同名称的函数可以在C语言中称为理论上的静态多态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6236159/

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