Сообщение Re[4]: Про указатели в Qt - нравится ли вам? от 05.10.2023 9:06
Изменено 05.10.2023 9:09 AlexGin
Re[4]: Про указатели в Qt - нравится ли вам?
Здравствуйте, sergii.p, Вы писали:
SP>Здравствуйте, AlexGin, Вы писали:
AG>>Первый вариант — выглядит вполне корректно и логично (как для C++, так и для Qt).
SP>сейчас для передачи владения в С++ семантика перемещения и только она выглядит логично.
Но это зависит от задачи.
Например: зачем мне перемещать объект, если он нужен именно эдесь?
Вот пример:
SP>А когда вы передаёте голый указатель, то не можете гарантировать, что будет происходить дальше.
SP>Не, конечно можно лазить по документациям, но это мартышкин труд.
Не понял, к чему Вы относите данную фразу?
SP>Это похоже на спор с чистым С. Ты им говоришь, что передавать указатель в С++ идеологически неверно, а они не понимают. Это как же, деды передавали и мы будем.
Идеология — это другое.
Ну передавай ссылку, а не указатель.
Однако, не везде это прокатит: нулевой ссылки, в отличие от Java и .NET, в C++ быть не может.
SP>Здравствуйте, AlexGin, Вы писали:
AG>>Первый вариант — выглядит вполне корректно и логично (как для C++, так и для Qt).
SP>сейчас для передачи владения в С++ семантика перемещения и только она выглядит логично.
Но это зависит от задачи.
Например: зачем мне перемещать объект, если он нужен именно эдесь?
Вот пример:
m_pMainWidget = new MainWidget(this);
m_pVBoxLayout->addWidget(m_pMainWidget);
...
m_pMainWidget->setGeometry(...);
SP>А когда вы передаёте голый указатель, то не можете гарантировать, что будет происходить дальше.
SP>Не, конечно можно лазить по документациям, но это мартышкин труд.
Не понял, к чему Вы относите данную фразу?
SP>Это похоже на спор с чистым С. Ты им говоришь, что передавать указатель в С++ идеологически неверно, а они не понимают. Это как же, деды передавали и мы будем.
Идеология — это другое.
Ну передавай ссылку, а не указатель.
Однако, не везде это прокатит: нулевой ссылки, в отличие от Java и .NET, в C++ быть не может.
Re[4]: Про указатели в Qt - нравится ли вам?
Здравствуйте, sergii.p, Вы писали:
SP>Здравствуйте, AlexGin, Вы писали:
AG>>Первый вариант — выглядит вполне корректно и логично (как для C++, так и для Qt).
SP>сейчас для передачи владения в С++ семантика перемещения и только она выглядит логично.
Но это зависит от задачи.
Например: зачем мне перемещать объект, если он нужен именно эдесь?
Вот пример:
SP>А когда вы передаёте голый указатель, то не можете гарантировать, что будет происходить дальше.
Гарантировать, что будет дальше — ни в каком случае не возможно. Даже, если кажется, что от всех ошибок защитился!
SP>Не, конечно можно лазить по документациям, но это мартышкин труд.
Не понял, к чему Вы относите данную фразу?
SP>Это похоже на спор с чистым С. Ты им говоришь, что передавать указатель в С++ идеологически неверно, а они не понимают. Это как же, деды передавали и мы будем.
Идеология — это другое.
Ну передавай ссылку, а не указатель.
Однако, не везде это прокатит: нулевой ссылки, в отличие от Java и .NET, в C++ быть не может.
SP>Здравствуйте, AlexGin, Вы писали:
AG>>Первый вариант — выглядит вполне корректно и логично (как для C++, так и для Qt).
SP>сейчас для передачи владения в С++ семантика перемещения и только она выглядит логично.
Но это зависит от задачи.
Например: зачем мне перемещать объект, если он нужен именно эдесь?
Вот пример:
m_pMainWidget = new MainWidget(this);
m_pVBoxLayout->addWidget(m_pMainWidget);
...
m_pMainWidget->setGeometry(...);
SP>А когда вы передаёте голый указатель, то не можете гарантировать, что будет происходить дальше.
Гарантировать, что будет дальше — ни в каком случае не возможно. Даже, если кажется, что от всех ошибок защитился!
SP>Не, конечно можно лазить по документациям, но это мартышкин труд.
Не понял, к чему Вы относите данную фразу?
SP>Это похоже на спор с чистым С. Ты им говоришь, что передавать указатель в С++ идеологически неверно, а они не понимают. Это как же, деды передавали и мы будем.
Идеология — это другое.
Ну передавай ссылку, а не указатель.
Однако, не везде это прокатит: нулевой ссылки, в отличие от Java и .NET, в C++ быть не может.