Esoteric C++ operators

前端 未结 6 498
渐次进展
渐次进展 2020-12-28 08:37

What is the purpose of the following esoteric C++ operators?

Pointer to member

::*

Bind pointer to member by pointer



        
6条回答
  •  南笙
    南笙 (楼主)
    2020-12-28 09:14

    There's no such operator as ::* and there's never been. I don't know where you got it.

    As for ->* and .* - these are dereference operators for pointers of pointer-to-member type.

    struct S {
      int i;
    };
    
    int main() {
      int S::*pi = &S::i; // pointer of pointer-to-member type
    
      S s;
      S* ps = &s;
    
      s.*pi = 0; // operator `.*` used
      assert(s.i == 0);
    
      ps->*pi = 1; // operator `->*` used
      assert(s.i == 1);
    }
    

    As for what pointers-to-members are... what does your favorite C++ book say on the subject?

提交回复
热议问题