1

C++ の "this" ポインターでポインター演算を実行するための正当な、および/または興味深い使用法は何ですか?

SEがこの質問の長さに満足するようにするために、関連するコードをいくつか含めます。

class Foo
{
public:
    Foo(bool terminate = false)
        : _data(terminate ? -1 : 0)
    {}

    void Bar(void)
    {
        if (_data >= 0)
        {
            _data++;
            this[1].Bar();
        }
    }

private:
    int _data;
};

void main()
{
    std::vector<Foo> vec;
    vec.push_back(Foo());
    vec.push_back(Foo());
    vec.push_back(Foo());
    vec.push_back(Foo());
    vec.push_back(Foo(true));

    vec[2].Bar();
}
4

2 に答える 2

0

それは合法ですが、コメントがあなたに言っているように、それはひどいスタイルです.

適合性テストを作成するツールチェーン開発者でない限り、これを行うべきではありません。

于 2015-01-07T15:46:30.540 に答える