Ответить что значит последний вариант

233
20 апреля 2018, 16:01

Имеет исходную строку в коде

Folder operator +( Folder )
{
    //тело метода (функции)
}

(на тело на самом деле наплевать)
Интересует способ записи заголовка функции
Имеем 4 предложенных способа, которые можно подставить вместо исходного варианта:

1) Folder operator +( Folder & f)
2) Folder operator +( const Folder & f)
3) const Folder operator +( const Folder & f)
4) const Folder operator +( const Folder & f) const

Если первые 3 я примерно понимаю что значит, то последний я не имею представления, прошу объяснить мне.
Заранее спасибо за ответы!

Answer 1
Folder operator +( Folder & f)         // Передана ссылка
Folder operator +( const Folder & f)   // Передана константная ссылка
const Folder operator +( const Folder & f)  // Передана константная ссылка,
                                            // возвращается константный объект 
const Folder operator +( const Folder & f) const  // Передана константная ссылка,
                                                  // возвращается константный объект,
                                                  // сам оператор константный 
                                                  // - т.е. не меняет текущий объект

Так понятно или подробнее?

Вот пример кода:

class Test
{
public:
    Test operator + (Test&) { cout << "1\n"; return Test(); }
    Test operator + (const Test&) { cout << "2\n"; return Test(); }
    Test operator + (const Test&) const { cout << "3\n"; return Test(); }
};
const Test f() { return Test(); }
int main(int argc, const char * argv[])
{
    Test a, b;
    a + b;
    a + f();
    f() + f();
}

который выводит:

1
2
3
READ ALSO
Создание собственных сигналов и слотов

Создание собственных сигналов и слотов

Программа имеет считывать данные с консоли, используя класс QTextStream, и записывать их в линейный контейнер QStack до введения терминального 125±0

221
Как вынести переменную из класса?

Как вынести переменную из класса?

Имеется следующий код (рисует множество Мандельброта):

263
Подружить cmake и glew в личном проекте

Подружить cmake и glew в личном проекте

Написал небольшую программу на visual studio 15 c++ с использованием GLEW GLFW GLM OpenCVПо требованиям человека, которому я это делаю, я должен отдать проект...

184