gpt4 book ai didi

c++ - C++中的模板是什么

转载 作者:行者123 更新时间:2023-11-30 04:34:21 24 4
gpt4 key购买 nike

谁能用简单的格式解释一下?

有模板函数和模板类。有什么优点和缺点?我听说模板的构建速度很慢,甚至在运行时也是如此?

真的吗?

谢谢

最佳答案

在 C++ 中,您可以重载函数,例如:

void do_something(object1 ob);
void do_something(int i);

好吧,模板允许您创建“通用”函数或采用任意类型的类。因此,不必在每次添加类型时都定义一个函数,您可以定义一次,然后让编译器为您“编写”所有函数。

template<typename T>
void do_something(T arg);

使用类,您可以根据类型差异创建变体。我能想到的最好的例子是 std::vector.. 你可以把它想象成一个容器/数组/任何东西。但是你需要预先定义类型(这样它就知道每个元素有多大,如何复制每个元素等):

std::vector<int> vector_of_ints;
std::vector< std::string > vector_of_strings;
...

因为实际上正在发生的事情是编译器在编译时为您编写附加函数,所以不应该有任何运行时影响。运行时可能会出现问题,模板代码太多,导致代码膨胀,这可能导致执行缓存未命中……但在今天的硬件上,这应该不是问题。

我看到的主要缺点是您通常必须将模板放在公开您的实现的头文件中。我还发现它们更难调试,因为它们会产生非常困惑的编译器错误消息。

关于c++ - C++中的模板是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079439/

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