Должен ли я все еще возвращать const объекты в C ++ 11? [Дубликат]

Возможный дубликат:

Должен ли я вернуть const объекты?

(Оригинальное название этого вопроса было:int foo () или const int foo ()? объясняя, почему я это пропустил.)

Эффективный C ++, пункт 3: Используйте const, когда это возможно. В частности, возвращаются const объекты, чтобы избежать непреднамеренного назначения, такого какif (a*b = c) {, Я нахожу это немного параноиком, тем не менее, я следовал этому совету.

Мне кажется, что возвращение const-объектов может снизить производительность в C ++ 11.

#include 
using namespace std;

class C {
public:
    C() : v(nullptr) { }

    C& operator=(const C& other) {
        cout < "copy" < endl;
        // copy contents of v[]
        return *this;
    }

    C& operator=(C&& other) {
        cout < "move" < endl;
        v = other.v, other.v = nullptr;
        return *this;
    }

private:
    int* v;
};

const C const_is_returned() { return C(); }

C nonconst_is_returned() { return C(); }

int main(int argc, char* argv[]) {
    C c;
    c = const_is_returned();
    c = nonconst_is_returned();
    return 0;
}

Ответы на вопрос(3)

Ваш ответ на вопрос