, скажем, у меня есть функция со следующими перегрузками: < /p>
void foo(const Bar& bar);
void foo(Bar&& bar);
< /code>
Какую перегрузку я должен поставить аргумент по умолчанию? Поэтому я сужу его до конструкторов и статических вспомогательных функций, которые вызывают конструктор, или в любом случае, который можно просто перенести в 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
Аргумент по умолчанию для параметра функции с перегрузкой ссылки RValue ⇐ C++
Программы на C++. Форум разработчиков
1751671189
Anonymous
, скажем, у меня есть функция со следующими перегрузками: < /p>
void foo(const Bar& bar);
void foo(Bar&& bar);
< /code>
Какую перегрузку я должен поставить аргумент по умолчанию? Поэтому я сужу его до конструкторов и статических вспомогательных функций, которые вызывают конструктор, или в любом случае, который можно просто перенести в 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 = {});
Подробнее здесь: [url]https://stackoverflow.com/questions/79690614/default-argument-for-function-parameter-with-rvalue-reference-overload[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия