170 похожих чатов

Привет. Почему в списках инициализации нельзя использовать копирующую инициализацию? Я

не могу сделать так:

class Foo {

int boo;
double goo;

public:
Foo() : boo = 5, goo = 3.1 {}
}

Разрешены только такие способы: boo(5), goo(3.1) или boo{5}, goo{3.1}

11 ответов

17 просмотров

Так нельзя, можно не в конструкторе: int boo = 5;

Andrii- Автор вопроса
Anatoly Shirokov
Так нельзя, можно не в конструкторе: int boo = 5;

Это да, но мне интересно почему они её там запретили

мне кажется, тут даже чисто из-за синтаксиса пришлось бы лексер и парсер в компиляторе усложнять.

А зачем может понадобиться именно через = инициализировать?

Andrii- Автор вопроса
d7d1cd
А зачем может понадобиться именно через = инициали...

Мне не нужно, пока что. Но мне непонятно почему там это запрещено.

Andrii
Мне не нужно, пока что. Но мне непонятно почему та...

Напишите Страуструпу, так получите более точный ответ

Синтаксис такой,

Andrii- Автор вопроса
Ilya Zviagin
Синтаксис такой,

А это никаких ограничений не создаёт? Имею ввиду, никак ли это не ограничит то, как мы можем инициализировать константы, например. Я пока ещё плохо понимаю отличие между разными типами инициализации, поэтому не могу понять.

Andrii
А это никаких ограничений не создаёт? Имею ввиду, ...

Прямая и юниформ инициализации не дают ограничений в списках инициализации. Очень удобно: struct buffer { std::string field; buffer(std::size_t count, char character) : field(count, character) {} }; Но при использовании юниформ инициализации есть свои нюансы

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
Карта сайта