не могу сделать так:
class Foo {
int boo;
double goo;
public:
Foo() : boo = 5, goo = 3.1 {}
}
Разрешены только такие способы: boo(5), goo(3.1) или boo{5}, goo{3.1}
Так нельзя, можно не в конструкторе: int boo = 5;
Это да, но мне интересно почему они её там запретили
мне кажется, тут даже чисто из-за синтаксиса пришлось бы лексер и парсер в компиляторе усложнять.
А зачем может понадобиться именно через = инициализировать?
Мне не нужно, пока что. Но мне непонятно почему там это запрещено.
Напишите Страуструпу, так получите более точный ответ
Синтаксис такой,
А это никаких ограничений не создаёт? Имею ввиду, никак ли это не ограничит то, как мы можем инициализировать константы, например. Я пока ещё плохо понимаю отличие между разными типами инициализации, поэтому не могу понять.
Прямая и юниформ инициализации не дают ограничений в списках инициализации. Очень удобно: struct buffer { std::string field; buffer(std::size_t count, char character) : field(count, character) {} }; Но при использовании юниформ инициализации есть свои нюансы
Обсуждают сегодня