#include<iostream>
using std::cout;
using std::endl;
template<typename T>
class beta
{
private:
template<typename V>
class hold
{
private:
V val;
public:
hold(V v=0):val(v){}
void show()const
{
cout<<val<<endl;
}
V Value()const
{
return val;
}
};
hold<T> q;
hold<int> n;
public:
beta(T t,int i):q(t),n(i)
{}
template<typename U>
U blab(U u,T t)
{
return (n.Value()+q.Value()*u/t);
}
void show()const
{
q.show();
n.show();
}
};
int main()
{
beta<double> guy(3.5,3);//这有点看不懂,用普通数据类型来初始化摸板类对象,难道是调用了hold(V v=0):val(v){}
函数进行了自动转换?
guy.show();
cout<<guy.blab(10,2.3)<<endl;
cout<<"Done\n";
return 0;
}
大家来帮帮忙指点我一下
还想问下,如果的确是进行了类型的自动转换的话,这样的方式会不会生成临时对象再进行赋值?
[此贴子已经被作者于2006-8-9 20:55:36编辑过]