gpt4 book ai didi

c++ - 什么时候使用 C++ 模板更好?

转载 作者:太空狗 更新时间:2023-10-29 19:38:23 25 4
gpt4 key购买 nike

现在我正在学习C++,现在我知道了模板的基本概念,它就像一个通用类型,我发现几乎每个 C++ 程序都使用模板,所以我真的很想知道我们什么时候应该使用模板?有人可以为我总结一下关于 c++ 模板的经验吗?您什么时候会考虑使用模板?

补充:如果我们定义这样的函数

template <class myType>
myType GetMax (myType a, myType b) {
return (a>b?a:b);
}

但是我们要传递一个对象(自定义类)进行比较,怎么实现呢?

补充2:在下面的答案中,有人写了这个示例代码

template <class myType>
const myType& GetMax (const myType& a, const myType& b) {
return (a<b?b:a);
}

template <class myType, class Compare>
const myType& GetMax (const myType& a, const myType& b, Compare compare) {
return (compare(a,b)?b:a);
}

这是正确的吗?我们可以只传递一个函数名作为 myType 类的参数吗?

最佳答案

你好,

简单的答案是当您希望行为保持不变而与用于实例化类的类型无关时。

因此,整型堆栈的行为方式与浮点型堆栈的行为方式与 MyClass 对象堆栈的行为方式相同。

当您希望允许行为专门化时,可以使用继承和基类。

假设您有一个名为 Animal 的基类,它有一个名为 makeSound() 的成员函数。您不知道每只动物会发出哪种声音,因此您将 makeSound 成员函数设为虚函数。事实上,因为没有所有动物的默认声音,您不知道默认行为是什么,所以您可以将此成员函数声明为纯虚函数。

然后这告诉任何创建派生类实例的人,例如 Lion 类,他们必须提供 makeSound 成员函数的实现,该函数将以某种方式提供咆哮。

编辑:我忘了补充一点,这是我强烈推荐的 Scott Meyers 的优秀著作“Effective C++”(sanitised Amazon link)中的一篇文章。

HTH

干杯,

关于c++ - 什么时候使用 C++ 模板更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1357807/

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