在 c++11 中,模板实现只能放在头文件中。 正确 错误
时间: 2023-08-22 19:02:31 浏览: 42
在C++11中,模板的实现可以放在头文件中。在之前的C++标准中,模板的实现需要放在头文件和源文件中进行分离,但在C++11标准中,引入了一种新的特性称为extern template,可以允许模板的显式实例化只在源文件中进行,从而实现了将模板的实现与声明分离,将实现放在源文件中而将声明放在头文件中。但这并不是强制的规定,只是提供了一种选择。所以,根据C++11标准的规定,模板的实现既可以放在头文件中,也可以放在源文件中。
相关问题
在头文件中只能声明函数而不能实现函数么
在头文件中可以既声明函数,又实现函数。通常情况下,头文件会包含函数的声明,而函数的实现会放在源文件(例如.cpp文件)中。这种方式可以将函数的声明和实现分离开,提供了更好的模块化和可维护性。
然而,在一些特殊情况下,也可以在头文件中直接实现函数。这通常发生在一些简单的、仅在一个文件中使用的函数上,例如内联函数或者模板函数。在这种情况下,将函数的实现放在头文件中可以避免链接错误。但是需要注意的是,如果将非内联函数的实现放在头文件中,并且多个源文件包含了该头文件,会导致重复定义错误。
因此,一般建议将函数的声明放在头文件中,将函数的实现放在源文件中,以提高代码的可读性和可维护性。
C++中,memcpy函数在哪个头文件中?
在C++中,memcpy函数位于头文件<cstring>(<string.h>),需要在使用时包含该头文件。例如:
```
#include <cstring>
int main() {
char dest[20];
char src[20] = "hello world";
std::memcpy(dest, src, 20);
return 0;
}
```
需要注意的是,使用memcpy函数时,要确保源数组和目标数组都有足够的空间,避免内存越界。