在这种情况下将调用哪个运算符

奴隶

当存在这样的构造时:

Foo f;  
f->bar(); //Here is called the class member access operator  

但是,当“ f”是指向Foo类型的对象的指针时:

Foo* f = new Foo();  
(*f)->bar(); //Here is also called the class member access operator  
f->bar(); //<-- Which operator is called?  
//Is it the pointer to member one (->*),  
//or is the pointer-dereference one, or maybe both of them?  

我还想问一下这种行为是否可以重载?

...  
class Foo{
    ...
    Foo* operator->() const{
        cout << "overloaded" << endl;
        return this;
    }
};
Foo a;  
Foo* b = new Foo();  
a->bar(); //Here is called the overloaded -> 
(*b)->(); //Again the overloaded one  
b->bar(); //This calls something else
杰伊

您不能->在指针上重载运算符。p是指针时,p->bar()将取消引用该指针并bar在该对象上调用该函数。它不会调用任何重载的运算符。

另一方面,(*p)->bar()->在指向类型上调用重载运算符。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在这种情况下,请解释一下散布运算符的用法

来自分类Dev

为什么在这种情况下null合并运算符(??)不起作用?

来自分类Dev

在这种特殊情况下,C ++如何处理位移运算符?

来自分类Dev

:: Java运算符在这种情况下做什么?

来自分类Dev

在这种情况下,如何评估按位运算符?

来自分类Dev

在这种情况下,“ if-else”为什么与三元运算符“?:”不同?

来自分类Dev

在这种情况下使布尔运算符过载是否有危险?

来自分类Dev

后缀运算符在这种特定情况下(JAVA)如何工作?

来自分类Dev

“/^ $/”的这些运算符是什么?在这种情况下它是如何工作的?

来自分类Dev

在这种情况下,三元运算符与C风格的指针向上转换是否会调用未定义的行为?

来自分类Dev

在这种情况下,我们需要禁用默认的复制构造函数并分配运算符?

来自分类Dev

在这种情况下,为什么管道后退运算符不起作用?F#

来自分类Dev

在这种情况下重写流插入运算符时,为什么会出现“找不到运算符”错误?

来自分类Dev

在这种情况下出现C ++错误,并重载了运算符+

来自分类Dev

为什么在没有引用运算符的情况下编译器无法决定要调用哪个函数?

来自分类Dev

在这种情况下哪个OS概念应该更好

来自分类Dev

在这种情况下如何调用ICommand.CanExecute?

来自分类Dev

Bash-在这种情况下如何调用函数

来自分类Dev

在开关情况下使用按位或运算符

来自分类Dev

C++ 运算符 -> 在复数情况下

来自分类Dev

在这种情况下阅读JSON?

来自分类Dev

在这种情况下的GIT实施

来自分类Dev

在这种情况下解释输出

来自分类Dev

使用apply()vs call(),在这种情况下使用哪个?

来自分类Dev

在这种特殊情况下,哪个内置功能应该优先?

来自分类Dev

具有static / const的变量,在这种情况下要使用哪个?

来自分类Dev

laravel在这种情况下我应该使用哪个路由或链接

来自分类Dev

在这种情况下,我应该使用哪个分类器或ML SDK?

来自分类Dev

在这种情况下我应该使用哪个 sqlite 查询

Related 相关文章

  1. 1

    在这种情况下,请解释一下散布运算符的用法

  2. 2

    为什么在这种情况下null合并运算符(??)不起作用?

  3. 3

    在这种特殊情况下,C ++如何处理位移运算符?

  4. 4

    :: Java运算符在这种情况下做什么?

  5. 5

    在这种情况下,如何评估按位运算符?

  6. 6

    在这种情况下,“ if-else”为什么与三元运算符“?:”不同?

  7. 7

    在这种情况下使布尔运算符过载是否有危险?

  8. 8

    后缀运算符在这种特定情况下(JAVA)如何工作?

  9. 9

    “/^ $/”的这些运算符是什么?在这种情况下它是如何工作的?

  10. 10

    在这种情况下,三元运算符与C风格的指针向上转换是否会调用未定义的行为?

  11. 11

    在这种情况下,我们需要禁用默认的复制构造函数并分配运算符?

  12. 12

    在这种情况下,为什么管道后退运算符不起作用?F#

  13. 13

    在这种情况下重写流插入运算符时,为什么会出现“找不到运算符”错误?

  14. 14

    在这种情况下出现C ++错误,并重载了运算符+

  15. 15

    为什么在没有引用运算符的情况下编译器无法决定要调用哪个函数?

  16. 16

    在这种情况下哪个OS概念应该更好

  17. 17

    在这种情况下如何调用ICommand.CanExecute?

  18. 18

    Bash-在这种情况下如何调用函数

  19. 19

    在开关情况下使用按位或运算符

  20. 20

    C++ 运算符 -> 在复数情况下

  21. 21

    在这种情况下阅读JSON?

  22. 22

    在这种情况下的GIT实施

  23. 23

    在这种情况下解释输出

  24. 24

    使用apply()vs call(),在这种情况下使用哪个?

  25. 25

    在这种特殊情况下,哪个内置功能应该优先?

  26. 26

    具有static / const的变量,在这种情况下要使用哪个?

  27. 27

    laravel在这种情况下我应该使用哪个路由或链接

  28. 28

    在这种情况下,我应该使用哪个分类器或ML SDK?

  29. 29

    在这种情况下我应该使用哪个 sqlite 查询

热门标签

归档