我试图理解以下 typedef 的含义
class A;
typedef bool (*TempType) (shared_ptr<A> s);
TempType
是一个接受shared_ptr<A>
参数并返回的函数指针类型bool
。
例如,您可以这样使用它:
bool my_func(shared_ptr<A> s)
{
return false;
}
// Variable x is of type TempType: A function pointer with a known signature.
TempType x = &my_func;
声明反映使用。您正在定义一个名为TempType
. 从声明中,您可以看到它将被用作,如果是函数bool (*TempType)(shared_ptr<A> s)
,它看起来就像一个函数调用*TempType
。if*TempType
是一个函数,并且声明反映了使用,我们的使用TempType
是用解引用操作符解引用它;TempType
指向函数的指针也是如此。它指向什么类型的函数?一个将 ashared_ptr<A>
作为参数(所述参数名为s
),并返回一个布尔值。
一般来说,“声明反映使用”是弄清楚这些类型定义的秘诀,同时需要记住你定义的类型和引用的类型。我尽量避免在定义中包含两个未绑定的名称(在本例中为TempType
和s
),因为除了可能引起混淆之外,它并没有增加太多;typedef bool (*TempType) (shared_ptr<A> s);
并且typedef bool (*TempType) (shared_ptr<A>);
具有相同的含义。