码迷,mamicode.com
首页 > 编程语言 > 详细

C++学习笔记34 模版的原理

时间:2014-08-20 10:32:46      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:c++   编译器   模版的原理   

模版在C++中具有非常重要的地位,STL就是大量运用模版写出来的。

模版的优点我就不一一列举了。这里我只说一下模版的原理。

当编译器遇到模版方法定义的时候,编译器进行语法检查,但是并不会编译模版。编译器无法编译模版定义,因为编译器不知道要使用的类型是什么,编译器不知道x和y的类型的情况下无法为x=y这样的语句生成代码。

当编译器遇到一个实例化的模版的时候,例如vector<int> vi(这里我只是拿vector举例,实际上基本类型的vector代码好像会自动存在编译器中),编译器会将模版类定义中的每一个T替换为int,从而生成vector的int版本。当模版遇到这个模版的另一个实例的时候,例如vector<string>,就会生成相应的string版本代码。


1.选择性实例化。

编译器只会为那些实际为某个类型调用的类方法生成代码

#include <iostream>
using namespace std;
template<class T>
class test{
private:
	T data;
public:
	test(T d):data(d){
	}
	void show()const{
		cout<<"this data is "<<data<<endl;
	}


};
int main()
{
	test<int> ti(15);
	ti.show();
	test<string> ts("string");
	ts.show();




}

例如上面的例子编译器只会生成test的int以及string版本,其他的如double,char等版本则不会生成。



C++学习笔记34 模版的原理,布布扣,bubuko.com

C++学习笔记34 模版的原理

标签:c++   编译器   模版的原理   

原文地址:http://blog.csdn.net/qq844352155/article/details/38701489

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!