我有以下课程:
using meth = Foo* (*)(int a, std::string b);
有人可以解释该行的含义:
{{1}}
在我看来,这是一种存储指向构造函数或其他东西的方法。如果有人可以解释,我将不胜感激。
请随意编辑问题本身以使其更具描述性 - 如果我知道此代码的作用,我就不会问这个问题。
答案 0 :(得分:4)
在这种情况下,它只是一种创建类型别名的新形式,就像使用typedef
一样。它表示类型别名meth
是指向函数的指针,该函数采用int
和std::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;