猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
为什么模板类的实现和声明应该位于同一个头文件中?
为什么模板类的实现和声明应该位于同一个头文件中?
为什么模板类的实现和声明应该位于同一个头文件中?你们谁能以身作则解释一下?
慕桂英4014372
浏览 1191
回答 3
3回答
胡说叔叔
编译器需要访问整个模板定义(而不仅仅是签名),以便为模板的每个实例化生成代码,因此需要将函数的定义移动到标头。欲知更多详情,请阅读包含模型.
0
0
0
蝴蝶刀刀
他们没必要这么做。需要的是模板定义在实例化点(使用它的地方)可见,这样编译器就可以在此时从模板派生类/函数。但是,对于模板类使用两个头文件是非常常见的:// foo_fwd.hpptemplate <typename T, typename U> struct Foo;// foo.hpp#include "foo_fwd.hpp"template <typename T, typename U> struct Foo { typedef std::pair<T,U> type; };这允许那些不需要完整模板定义的人包含一个稍微轻一些的标头,例如://is_foo.hpp#include <boost/mpl/bool.hpp>#include "foo_fwd.hpp"template <typename Z>struct is_foo: boost::mpl::false_ {}; template <typename T, typename U>struct is_foo< Foo<T,U> >: boost::mpl::true_ {};它可以加快编译时间。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续