什么是C++ 2 中的模板

What are templates in C++ 2

本文关键字:C++ 什么      更新时间:2023-10-16

大家好,任何人都可以向我解释类 temlplate 成员函数返回类型 T (参数化类型)和 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()的返回值有什么区别?????

你有:

  • 一个array
  • 持有tObj

tObj的实际值是通过数组的构造函数给出的,array会记住它。

getObj方法返回tObj,即array记住的东西。

GETOBJ方法返回一个array 。它的代码没有显示,但区别已经在这里:它返回一些array,而不是数组记住的东西。

就像"从盒子里退回糖果"和"退回盒子"一样。

顺便说一句。我认为您的签名缺少类型参数。我的意思是:

不是:array GETTOBJ()const;
但是:array<T> GETTOBJ()const;

因为数组是一个模板,没有类型参数的array是没有意义的。

在下面的示例中,"类 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 = 类型名 T

有关更多信息,请查看:

http://en.wikipedia.org/wiki/Template_(C%2B%2B)

哎呀...和 GETTOBJ 返回类的类型...总是。。。可以等于 GETTOBJ 和 tOBJ,前提是您定义:

array <array> _array_var();