Должен ли я все еще возвращать 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;
}