C++模板 - 代码的用法,二进制的大小

我想知道模板代码的代码大小。 请考虑下面的代码C++模板 - 代码的用法,二进制的大小

template<typename T> 

class vector

{

public:

vector(size_t size) :

{

array = NEW T[size];

}

uint32_t push_back(T value)

{

... adding value to array and possible array realloction..

}

private:

T * array;

}

当我有两个向量的情况下,

vector<float> v1; 

vector<int> v2;

将它编有两个push_back实现

push_back(float) 

push_back(int)

或只有一个或别的东西为二进制?

对于floatint,是否可以使用模板而不是分隔类来缩小代码大小?

回答:

从模板实例化的类和函数在运行时它们之间没有任何关系,因此函数将被复制。

一些编译器会优化共享/重复代码,但该优化的范围比模板实例更宽。

请注意,即使代码看起来相同,当使用某些操作符时,它可能会触发不同的函数调用。

对于像std::vector<int*>std::vector<char*>这样的指针容器,这是特别明显的,虽然它们的行为几乎完全相同,但您将获得不同的功能。总之,模板非常适合缩小代码大小,但创建许多不同的实例会使二进制文件膨胀。

以上是 C++模板 - 代码的用法,二进制的大小 的全部内容, 来源链接: utcz.com/qa/262910.html

回到顶部