2015-06-26 4 views
2

В соответствии с this webpage нестатическая функция-член может иметь завершающий & или && в своем объявлении. Они имеют следующий примерКаковы контрольные квалификаторы для функций?

struct S { 
    virtual int f(char) const, g(int) &&; // declares two non-static member functions 
    }; 

1) включают ли подпись второй функции в virtual?

virtual int g(int) && 

2) В чем смысл завершающего &&?

+1

Пожалуйста, создайте два разных вопроса для двух разных вопросов в тексте. – inf

+1

'&&' для ссылки r-value для '' this this ''. – Jarod42

ответ

5
struct S { 
    virtual int f(char) const, g(int) &&; 
}; 

struct D : S { 
    virtual int f(char) const override; 
    virtual int g(int) && override; 
}; 

приведенный выше код компилируется как в g++ and clang. Это указывает, по крайней мере, на практике, что g является virtual в S.

См. What is "rvalue reference for *this"? по другим вопросам.

+1

Хорошее использование 'override' там! Я собирался подтвердить, проверив, будет ли указатель на базу правильно называть 'g', но это намного лучше! – Alejandro

Смежные вопросы