对象实例化与类型C++

Object instantiation in C++ with type

本文关键字:C++ 类型 实例化 对象      更新时间:2023-10-16

有人可以告诉我为什么我们在下一行Graph之后写size_t

Graph<std::size_t> g;

Graph是类名,g是对象。size_t在那里做什么?我们为什么要写这个?

如果问题太基本,我很抱歉。但是我找不到对此的解释,到目前为止,当我想创建一个类对象时,我已经写过:

class_name object;

喜欢:

Graph g;

因为Graph是一个类模板,而不是一个普通的类。

类模板定义一个类,其中某些变量的类型、方法的返回类型和/或方法的参数被指定为参数。

因此,通过使用Graph<std::size_t > g;,您将使用具有size_t作为类型参数的类模板实例化之一。

您也可以使用Graph<int > g等等。

补充:

当编译器遇到模板方法定义时,它会执行语法 检查ony,但实际上并没有编译模板。

让我们编写模板

template<typename T>
class MyClass
{
T memberVar{};
};

仅当编译器遇到模板的实例化(如MyClass<int> myObj(时,它才会通过将类模板定义中的每个T替换为int等来为MYClass模板的int版本编写代码。