标签: operator-arrow-star

C++中的指针成员 - >*和.*运算符是什么?

是的,我已经看到了这个问题,这个FAQ(错误的链接) 这个常见问题,但我还是不明白->*,并.*用C++的意思.
这些页面提供了有关运算符的信息(例如重载),但似乎并不能很好地解释它们什么.

什么是->*.*C++,你什么时候需要使用它们->.?相比?

c++ operators pointer-to-member operator-arrow-star

59
推荐指数
7
解决办法
2万
查看次数

奇怪的" - >*[]"表达式在cpp.react库的C++源代码中

这是我在cpp.react库的文档中找到的C++代码段:

auto in = D::MakeVar(0);
auto op1 = in ->* [] (int in)
{
    int result = in /* Costly operation #1 */;
    return result;
};
Run Code Online (Sandbox Code Playgroud)

我从未见过这种->* []符号.首先,我认为这只是一个错字,但我也在源代码中找到了这样一个表达式:

auto volume = (width,height,depth) ->* [] (int w, int h, int d) {
    return w * h * d;
};
Run Code Online (Sandbox Code Playgroud)

这是有效的C++ 11(或C++ 14)吗?这是什么意思?

c++ language-lawyer c++11 operator-arrow-star

55
推荐指数
3
解决办法
3787
查看次数

什么是C++中的 - >*运算符?

C++继续让我感到惊讶.今天我发现了 - >*运算符.它是可重载的,但我不知道如何调用它.我设法在课堂上重载它,但我不知道如何调用它.

struct B { int a; };

struct A
{
    typedef int (A::*a_func)(void);
    B *p;
    int a,b,c;
    A() { a=0; }
    A(int bb) { b=b; c=b; }
    int operator + (int a) { return 2; }
    int operator ->* (a_func a) { return 99; }
    int operator ->* (int a) { return 94; }
    int operator * (int a) { return 2; }
    B* operator -> () { return p; }


    int ff() { return 4; }
}; …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading operator-arrow-star

21
推荐指数
2
解决办法
2247
查看次数

什么是 - >, - >*和.*运算符的正确术语?

维基百科将它们称为:

- >对象的成员b指向的一个
- >*由a指向的对象指向的
成员.*成员b指向的成员

但我需要在不使用"a"和"b"的情况下引用它们.他们有名字吗?

c++ naming operators operator-arrow-star

7
推荐指数
1
解决办法
2103
查看次数