了解 C++ 中语法“<DataType>”的用法

Understanding the usage of the syntax "<DataType>" in C++

我想了解“<DataType>”在C++中的用法。 据我所知,它是用于模板的语法,它使用指定的数据类型来实现函数的专业化或 class 实例化。

来自 python,我知道所有数据类型都定义为 class(如果它不适用于 C++,请纠正我),所以如果您在 python,你会发现:

class int: 
    @overload 
    def __new__(cls: Type[_T], x: str | bytes | SupportsInt | SupportsIndex | _SupportsTrunc = ...) -> _T: ...
 ... 

根据参数重载了哪个构造函数。那么为什么在 C++ 中它不使用 (dataType) 而不是 <dataType> 并根据参数的类型重载构造函数?

另外,我能确定每次出现<DataType>,肯定是那里的模板吗?

一些示例:

std::vector<int> x;
std::vector< std::vector<int> >& someVar;

cv::Mat opencvMat;
int x = static_cast<int>(opencvMat.at<float>(i, 3) * frameWidth);

我将使用您的示例:

std::vector<int> x;

x 是一个包含整数的向量(动态长度数组)。

std::vector< std::vector<int> >& someVar;

someVar 是对向量向量的引用。内部向量包含整数。这是引用二维动态数组的常用方法,其中每一行可以有不同数量的列。

int x = static_cast<int>(opencvMat.at<float>(i, 3) * frameWidth);

这就是你如何进行各种风格的演员表。我会把它分成两部分:

opencvMat.at<float>(i, 3)

我不使用这个库,但 at 方法可能是一个模板,这意味着你将收到一个浮点数。

static_cast 将计算值强制为 int,而没有编译器警告丢失精度。

如您所知,这都与模板有关,您会看到模板是使用 <> 定义的。例如:

template <class ObjectType>
class Foo:
public:
     ObjectType value;
};

Foo<std::string> myFoo;

在这种情况下,myFoo.value 是一个字符串。