首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解cls* (*) (int,double)

如何理解cls* (*) (int,double)
EN

Stack Overflow用户
提问于 2021-01-30 13:24:45
回答 1查看 45关注 0票数 0

我正在做一些从互联网上抓取的源代码,发现了一个混淆的句子。

代码语言:javascript
复制
map<int, Element* (*) (int, Domain*) > elemList

我的问题是关于elemList的价值部分。是一个指针吗?还是构造函数?还是别的什么?

诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 2021-01-30 13:40:29

Element* (*) (int, Domain*)用于函数指针。它们有两种类型。

原始函数指针(类似于:void (*foo)(int x, int y);).

  • Member函数指针(类似于:void (Object::*foo)(int x, int y);).

在一个原始函数指针中,它由3个部分组成。让我们使用上面的例子,

参数返回类型(它是void).

  • Function名称/指针名称(它是foo).

  • Function

  • (它是(int x, int y)).

在成员函数指针中,它由4个部分组成。

类返回类型( void).

  • Which类/结构)保存函数( Object).

  • Function名称/指针名称( foo).

  • Function

  • )( (int x, int y)).

调用原始函数指针就像这样简单,

代码语言:javascript
复制
void Func(int x, int y) { ... }

void (*foo)(int x, int y) = Foo;    // Assigning the function pointer.
foo();    // Calling the pointer.

调用成员函数指针略有不同。为此,您需要对象的有效实例。

代码语言:javascript
复制
class Object {
public:
    void Func(int x, int y) { ... }
};


void (Object::*foo)(int x, int y) = &Object::Func;    // Assigning the function pointer. Notice the '&' operator here.

Object object;
(object.*foo)();    // Calling the function pointer.

所以map<int, Element* (*) (int, Domain*) > elemList所做的是,它存储一个映射到一个整数的原始函数指针的映射。

附加:为了将一个函数赋值给一个函数指针,这些东西应该匹配,

保存函数的function.

  • The对象的返回type.

  • Parameters (这仅适用于成员函数)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65964923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档