Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的模板+;_C++_Visual C++_Templates - Fatal编程技术网

C++ C+中的模板+;

C++ C+中的模板+;,c++,visual-c++,templates,C++,Visual C++,Templates,我们是否可以在没有模板类的普通类中声明模板函数,或者它应该始终位于模板类中?是的,您也可以在非模板类中声明模板函数,例如: struct X { template<class T> void f(const T& t) { // ... } }; struct X{ 模板 空f(常数T&T){ // ... } }; 我们可以在普通类中声明模板函数而不声明模板类吗 是的,我们可以。比如说 class demo { public

我们是否可以在没有模板类的普通类中声明
模板
函数,或者它应该始终位于
模板类
中?

是的,您也可以在非模板类中声明模板函数,例如:

struct X {
    template<class T>
    void f(const T& t) {
        // ...
    }
};
struct X{
模板
空f(常数T&T){
// ...
}
};
我们可以在普通类中声明模板函数而不声明模板类吗

是的,我们可以。比如说

class demo
{
   public:
   template <typename T>
   void func(const T& x) { 
      //do stuffs 
   }
};

int main()
{
   demo d;
   d.func<int>(5);
}
类演示
{
公众:
模板
void func(常数T&x){
//做事
}
};
int main()
{
演示d;
d、 func(5);
}

是完全有效的

是的,您可以,但请确保您的模板函数定义和声明位于头文件中。如果你想知道更多为什么会这样或者更多关于模板的信息,我可以向你推荐这本书

我想你指的是“类模板”。类模板,如
template struct Foo{}
是一种模板,但不是一种类。类似地,“函数模板”是另一种模板,而不是函数。