Re[3]: const в аргументах методов
От: tstalker Украина  
Дата: 04.04.16 08:36
Оценка:
Здравствуйте, yaser, Вы писали:

Y>2. Есть большой отдел разработчиков. Вы проектируете класс, не понятно кто, как, когда будет им пользоваться. Понятно, что если метод private, то для оптимизации взаимодействия внутренних метода класса вполне приемлимо возврат по const object_ref, но если метод паблик — не понятно как разработчик воспользуется возможностями. Может не стоит проектировать класс (в общем случае) публичные методы которого возвращают const object_ref?


Бро, я же писал тебе выше: это норма.
Ничего здесь опасного нет.
Вот навскидку простенький пример:
#include <string>
#include <iostream>

class C
{
public:
    C(const std::string& s): s(s)
    {}

    C(const C& c): C(c.s)
    {}

    std::string& get(void)
    {
        return s;
    }

    const std::string& get(void) const
    {
        return s;
    }

private:
    std::string s;
};

int main(void)
{
    C x("aaaaa");
    std::cout << x.get() << std::endl; // std::string& C::get(void)
    const C y(x);
    std::cout << y.get() << std::endl; // const std::string& C::get(void) const
    x.get() = "bbbbb"; // std::string& C::get(void)
    const C& z(x);
    std::cout << z.get() << std::endl; // const std::string& C::get(void) const
}

В комментариях специально поставил пояснения, какие именно методы get() вызываются.
Так что смело возвращай ссылки на члены класса и пой:
Don't worry! Be happy!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.