Аргумент по умолчанию для параметра функции с перегрузкой ссылки RValueC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Аргумент по умолчанию для параметра функции с перегрузкой ссылки RValue

Сообщение Anonymous »

, скажем, у меня есть функция со следующими перегрузками: < /p>
void foo(const Bar& bar);
void foo(Bar&& bar);

Какую перегрузку мне следует поместить аргумент по умолчанию? Поэтому я сужу его до конструкторов и статических вспомогательных функций, которые вызывают конструктор, или в любом случае, который можно просто перенести в foo . Функция должна иметь панель по умолчанию Итак, какая перегрузка должна принимать аргумент по умолчанию?class Bar {
// Just another class
};

class Foo {
public:
// Constructors
Foo(/* other things */, const Bar& bar);
Foo(/* other things */, Bar&& bar);
// ... more overload that involve Bar.

// Or static functions that will call the constructors.
static Foo* foo1(/* other things but lesser */, const Bar& bar);
static Foo* foo1(/* other things but lesser */, Bar&& bar);
// ... more overload that involve Bar.
};
< /code>
Я мог бы просто сделать это, но я стараюсь не писать больше перегрузки: < /p>
Foo(/* other things */):
: Foo{/* pass in other things */, Bar{}} {}

static Foo *(/* other things */) {
Bar bar{};
return new Foo(/* pass in other things */, bar);
// Or maybe
// return new Foo(/* pass in other things */, Bar{});
}
< /code>
Итак, я должен сделать это: < /p>
Foo(/* other things */, const Bar& bar = {});
< /code>
или это: < /p>
Foo(/* other things */, Bar&& bar = {});


Подробнее здесь: https://stackoverflow.com/questions/796 ... e-overload
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»