模板和两个单独的类之间的差异

Hem*_*ava 6 c++

让我们假设这一小段代码:

#include<iostream>

template <typename T>
class A {
  T a;
};

int main() {
  A<int> a;
  A<char> c;
}
Run Code Online (Sandbox Code Playgroud)

现在,考虑这个代码而不是模板,我有两个单独的int和char类.

#include<iostream>

class A {
  int a;
};

class C {
  char c;
};

int main() {
  A a;
  C c;
}
Run Code Online (Sandbox Code Playgroud)

根据程序的编译器,优化或代码段,上述两种方法会有什么不同吗?

在哪种方法中可执行文件的大小会更大?为什么?

rus*_*tyx 8

在编译代码之前,模板本质上是一种生成源代码的机制.

这两种方法是从代码生成或可执行大小的角度相同(除了在第一种情况下两个类得到的成员变量a,并且在第二ac).

变体1变体2进行比较.注意相同的生成代码.