在这种情况下 "using" 正在做什么,正在存储什么?

What is "using" doing in this instance, and what is being stored?

我有以下 class:

class Foo{

}

class Bar{
public:

     using meth = Foo* (*)(int a, std::string b);
}

谁能解释一下这行的意思:

     using meth = Foo* (*)(int a, std::string b);

在我看来,这是一种存储指向构造函数或其他内容的指针的方法。如果有人能解释一下,我将不胜感激。

请随意编辑问题本身以使其更具描述性 - 如果我知道这段代码的作用,我就不会问这个问题。

在那种情况下,它只是一种创建类型别名的新形式,就像使用 typedef 一样。它表示类型别名 meth 是一个指向函数的指针,该函数接受一个 int 和一个 std::string 参数并返回一个指向 Foo 的指针。然后您可以使用它来声明变量,例如

meth walter;

然后您可以像任何其他变量一样分配给变量 walter

类型别名存储在编译器的内存中,它不会写入对象或可执行文件,它仅供编译器使用并在编译器内部使用。


应该注意的是,与 C++ 中的许多其他事物一样,上下文很重要,关键字 using 可以在不同的上下文中做不同的事情。

它可用于创建类型别名(如问题中所述),可用于创建名称空间别名,可用于将符号从一个范围拉入另一个范围(最常见的是,不幸的是)将所有符号从 std 命名空间拉入全局范围)。

using meth = Foo* (*)(int a, std::string b);

使 meth 成为冗长的函数指针类型声明的 shorthand(类型别名)。

它可以像这样使用:

Foo* bar(int a, std::string b);

meth baz = bar;