类模板中的&符号问题
部分代码如下
template <class T>
class Store
{
private:
T item;
bool haveValue;
public:
Store ();
/*T &getElem ();*/
void putElem (const T &x);
};
template <class T>
Store<T>::Store ():haveValue (false)
{
}
template <class T>
/*T &Store<T>::getElem ()*/
{
if (!haveValue)
{
cout<<"No item present!"<<endl;
exit (1);
}
/*return item;*/
}
template <class T>
void Store<T>::putElem (const T &x)
{
haveValue = true;
item = x;
}
代码中注释部分出现的&符号是什么意思?
看起来像是说getElem函数返回值为 T类型参数 的指针类型,但在其函数体中写的返回值是 T类型参数 的变量
后来去掉注释语句中的&符号编译程序,也不报错,结果也一样
求大神指教
[解决办法]
返回值为 T类型参数 的引用类型
返回值类型开销比较大,特别是对于比较大的struct/class类型
[解决办法]
你先搞清楚引用,再搞模板。