您的位置:首页 > 其它

模版编译和头文件

2015-09-29 15:00 218 查看
当编译器遇到模版定义时,它并不生成代码。只有当我们实例化出模版的 一个特定版本时,编译器才会生成代码。当我们使用模版时,编译器才生成代码。

通常调用一个函数时,编译器只需要掌握函数的声明。类似的,当我们使用一个类类型的对象时,类定义必须是可用的,但成员函数的定义不必已经出现。因将类定义和函数声明放在头文件中,而普通函数和类的成员函数的定义放在源文件中。

模版则不同,为了生成一个实例化版本,编译器需要掌握函数模版或类模版成员函数的定义。因此,与非模版代码不同,模版的头文件通常既包含声明也包含定义。

模版包含两种名字:

那些不依赖模版参数的名字

那些依赖于模版参数的名字

当使用模版时,所有不依赖于模版参数的名字都必须是可见的,这是由模版的提供者来保证的。而且,模版的提供者必须保证,当模版被实例化时,模版的定义,包括类模版的成员的定义,也必须是可见的。

用来实例化模版的所有函数,类型以及类型关联的运算符的声明都必须是可见的,这是由模版的用户来保证的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: