什么是"使用"在这个例子中做什么,以及存储什么?

时间:2016-06-11 06:21:57

标签: c++ function-pointers using

我有以下课程:

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

有人可以解释该行的含义:

{{1}}

在我看来,这是一种存储指向构造函数或其他东西的方法。如果有人可以解释,我将不胜感激。

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

2 个答案:

答案 0 :(得分:4)

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

meth walter;

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

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

应该注意的是,与C ++中的许多其他内容一样,上下文很重要,关键字using可以在不同的上下文中执行不同的操作。

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

答案 1 :(得分:4)

该行

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

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

可以像:

一样使用
Foo* bar(int a, std::string b);

meth baz = bar;