指向成员函数的指针-语法

男性主义者
void foo();
class Foomatic() {
    void bar();
    void baz()
    {
        std::thread a(foo); // this compiles
        std::thread b(Foomatic::bar, this); // this doesn't 
        std::thread c(&Foomatic::bar, this); // and this compiles
        // ...
    }
};

我知道成员函数指针的正确语法是&Foomatic::bar

但是,为什么Foomatic::bar不正确呢?那一个返回什么?为什么正确才是&Foomatic::bar正确的呢?对我来说似乎违反直觉。

这不是重复项。您链接到的问题将回答正确的语法,而不是解释其原因。

我在问为什么C ++在这里如此不一致,我已经知道语法是什么。

迪特玛·库尔(DietmarKühl)

C ++从C继承了从函数到函数指针的转换:在C语言中,您只需将函数名称分配给函数指针即可,而无需获取地址。函数名称到函数指针的这种“衰减”似乎是不明智的,并且确实在C中引起了一些混乱。

当引入成员的指针时,不需要与C向后兼容:C没有成员的指针。因此,可以选择不进行从成员名称到成员指针的隐式转换。由于可以在以后觉得有必要但很难删除某个设施的情况下可以添加它,因此选择了不进行从成员名称到成员指针的隐式转换。

由于有一个合理一致的接口来获取函数的指针,成员的指针和对象的指针,因此似乎不需要从成员名到成员的隐式转换,因为从指向对象的指针的对象名称。

在语义上,类似这样的内容T::member是对成员的引用,而不是对成员的指针。但是,我认为不可能用当前的规范表述这种类型。将来的标准可能会为此语法定义某种形式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

指向成员函数语法的指针

来自分类Dev

语法错误:使用指向对象的指针调用成员函数指针

来自分类Dev

模板转换运算符如何指向成员函数语法的指针如何工作

来自分类Dev

非标准语法;将成员函数分配给向量时,使用“&”创建指向成员错误的指针

来自分类Dev

指向结构/类成员的指针的正确语法是什么

来自分类Dev

非标准语法;使用“&”创建指向成员的指针

来自分类Dev

指向成员函数的指针

来自分类Dev

指向成员函数的指针

来自分类Dev

为什么会出现“非标准语法;使用'&'创建指向成员的指针”和“没有重载函数需要2个参数”的错误?

来自分类Dev

指向成员函数的函数指针

来自分类Dev

指向成员函数的函数指针

来自分类Dev

Visual Studio 2015“非标准语法;使用“&”创建指向成员的指针”

来自分类Dev

C ++ Visual Studio非标准语法使用'&'创建指向成员的指针

来自分类Dev

成员函数返回指向成员函数的指针

来自分类Dev

成员函数指向成员函数的指针

来自分类Dev

指向成员函数的指针的向量

来自分类Dev

指向类的成员函数的指针

来自分类Dev

下垂指向成员函数的指针

来自分类Dev

指向类成员函数的指针

来自分类Dev

指向成员的指针所指向的函数类型

来自分类Dev

指向成员的指针所指向的函数类型

来自分类Dev

指向函数调用的指针与指向成员函数调用的指针

来自分类Dev

指向函数调用的指针与指向成员函数调用的指针

来自分类Dev

函数指针声明语法混乱

来自分类Dev

指向类成员函数的函数指针

来自分类Dev

Visual Studio 2015中出现“非标准语法;使用'&'创建指向成员的指针”错误

来自分类Dev

指向成员函数的C ++指针出错:不是函数或函数指针

来自分类Dev

指向类模板成员的函数指针

来自分类Dev

存储指向成员函数的指针的容器

Related 相关文章

  1. 1

    指向成员函数语法的指针

  2. 2

    语法错误:使用指向对象的指针调用成员函数指针

  3. 3

    模板转换运算符如何指向成员函数语法的指针如何工作

  4. 4

    非标准语法;将成员函数分配给向量时,使用“&”创建指向成员错误的指针

  5. 5

    指向结构/类成员的指针的正确语法是什么

  6. 6

    非标准语法;使用“&”创建指向成员的指针

  7. 7

    指向成员函数的指针

  8. 8

    指向成员函数的指针

  9. 9

    为什么会出现“非标准语法;使用'&'创建指向成员的指针”和“没有重载函数需要2个参数”的错误?

  10. 10

    指向成员函数的函数指针

  11. 11

    指向成员函数的函数指针

  12. 12

    Visual Studio 2015“非标准语法;使用“&”创建指向成员的指针”

  13. 13

    C ++ Visual Studio非标准语法使用'&'创建指向成员的指针

  14. 14

    成员函数返回指向成员函数的指针

  15. 15

    成员函数指向成员函数的指针

  16. 16

    指向成员函数的指针的向量

  17. 17

    指向类的成员函数的指针

  18. 18

    下垂指向成员函数的指针

  19. 19

    指向类成员函数的指针

  20. 20

    指向成员的指针所指向的函数类型

  21. 21

    指向成员的指针所指向的函数类型

  22. 22

    指向函数调用的指针与指向成员函数调用的指针

  23. 23

    指向函数调用的指针与指向成员函数调用的指针

  24. 24

    函数指针声明语法混乱

  25. 25

    指向类成员函数的函数指针

  26. 26

    Visual Studio 2015中出现“非标准语法;使用'&'创建指向成员的指针”错误

  27. 27

    指向成员函数的C ++指针出错:不是函数或函数指针

  28. 28

    指向类模板成员的函数指针

  29. 29

    存储指向成员函数的指针的容器

热门标签

归档