标签:
深入理解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
标签:
原文地址:http://www.cnblogs.com/maniford/p/5470948.html