только radius?
Ball(const std::string &color="red", double radius=20.0)
{
m_color = color;
m_radius = radius;
}
пример где не обрабатывает?
Вызывающая сторона этого сделать не может, поскольку аргументы передаются в порядке перечисления параметров. Именованных аргументов в языке в естественном виде нет (можно "обойти" через designated-initializer в параметр-агрегат).
Там вопрос про параметры по умолчанию
class Ball { private: std::string m_color; double m_radius; public: Ball(const std::string &color="red", double radius=20.0) { m_color = color; m_radius = radius; } void print() { std::cout << "color: " << m_color << ", " << "radius: " << m_radius << std::endl; } }; int main() { Ball thirty(30.0); thirty.print(); return 0; }
А разве можно адресу строки присвоить “red” по дефолту? Адрес же число
это не указатель, а ссылка
Он обращается не по адресу, а по ссылке к значению. Если бы там был указатель, то тогда бы пришлось разымновывать
амперсанд там используется не как оператор взятия адреса (&str), а как указание ссылочного типа (string&).
Аргумент по-умолчанию - инициализатор временного объекта типа std::string, которому константная ссылка продлевает время жизни.
Обсуждают сегодня