![]() |
1
3
会出错吗?取决于你如何定义“错误”。 它可能不会在链接时给您一个错误。但它肯定会破坏您的可执行文件。链接器 假设 ,当它遇到符号的多个定义时,它们是相同的,因此除了其中一个之外,其余的都可以丢弃。如果它们不相同,你就违反了一个定义规则,这意味着你将进入一个未定义的行为领域。任何事情都可能发生。很可能,你会看到随机崩溃。 |
![]() |
2
1
编译系统对模板采用的最常见(但不是唯一)方法是让编译器贪婪地实例化每个翻译单元中使用的所有模板,从而导致多个实例化。然后链接器静默地丢弃重复项。 但是,我绝对不会依赖这种行为来处理同一(命名)模板的两个不同实现。 |
![]() |
3
1
最有可能的是,将为外部调用选择这两个实现中的一个。 因为这里有太多的哥特人,我不会这么做的。以下是一些问题:
|
![]() |
4
0
你最终会根据链接人的心情打电话给对方。一个糟糕的处境。 |
|
Julia · 矢量中相加为总和S的值的数量 2 年前 |
![]() |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 3 年前 |
![]() |
quantumwell · 将空向量放入std::map() 7 年前 |
![]() |
OutOfBound · 对未初始化内存使用算法的优点 7 年前 |
![]() |
DarthRubik · 在使用列表删除之后,迭代器如何不无效 7 年前 |