大家好我们有人可以向我解释类型T(参数化类型)的类temlplate成员函数返回类型与claas返回类型的对象之间的区别
template<class T>
class array
{
public:
array(T tx): tObj(tx){}
T getObj()const{return tObj;}
array GETTOBJ()const;
private:
T tObj;
}
我有困惑:函数getObj()和GETTOBJ()的返回值有什么区别??????
答案 0 :(得分:4)
你有:
array
tObj
tObj
的实际值是通过数组的构造函数给出的,array
会记住它。
getObj
方法返回tObj
,即array
记住的内容。
GETOBJ
方法返回array
。它的代码没有显示,但差异已经存在:它返回一些array
,而不是数组记住的东西。
这是一个区别,比如“从盒子里回来糖果”和“退回盒子”。
顺便说一下。我认为你的sig缺少类型参数。我的意思是:
不是:array GETTOBJ()const;
但是:array<T> GETTOBJ()const;
因为数组是模板,没有类型参数的array
没有意义。
答案 1 :(得分:0)
在下面的示例中,“类T”没有定义,因此在初始化此类时,您可以添加任何参数。例如:
array <int> _array_var(); //OR
array <char> _array_var(); // OR WHAT TYPE YOU WHANT, EVEN SOME STRUCTURES OR CLASSES
在您的示例中“T tOBJ()”将返回您初始化的类型。例如:
如果你
array <int> _array_var(); // THAN T=int.... SO T tOBJ will return int type, equivalent to
int tOBJ();
依此类推......类T = typename T
了解更多信息:
http://en.wikipedia.org/wiki/Template_(C%2B%2B)
是的,而且GETTOBJ归类于班级...总是...... 如果您定义:
,则可以使用tOBJ与GETTOBJ相等array <array> _array_var();