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

C++模板实例化

时间:2016-05-08 18:20:29      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

深入理解C++中第七章提到模板实例化参数的选择:函数的决议结果只和函数参数有关和返回值无关。记录一下。

测试程序如下:

#include <iostream>
using namespace std;
int foo(int d)
{
	cout << "int foo" << endl;
	return d+1;
}
double foo(double d)
{
	cout << "double foo" << endl;
	return d+1;
}
#include <iostream>
using namespace std;
extern int foo(int);
extern double foo(double);
template <class type>
class A {
private:
	int _val;
	type _member;
public:
	void invariant() { _member = foo(_val); }//形参为int,返回型为double,但调用foo(int)
	type type_dependent() {
		return foo(_member);//形参为double,调用foo(double)
	}
};

int main(int argc, char *argv[])
{
	A< double > a;
	a.invariant();
	a.type_dependent();
	return 0;
}

 测试结果如下:

int foo

double foo

当模板有实例化具体类型时,才产生具体的对象类图:

Class A<double>
   size=12 align=4
   base size=12 base align=4
A<double> (0x0xb686e850) 0

C++模板实例化

标签:

原文地址:http://www.cnblogs.com/maniford/p/5470948.html

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