powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Некоторые вопросы о программировании на C++
25 сообщений из 142, страница 5 из 6
Некоторые вопросы о программировании на C++
    #39052297
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmaytonпропущено...

Что за цепочки? "Method chaining"?
Я не знаю что имелось в виду. Нужно уточнить у Mozok.
Как дела кст. Заходи в наш бенчмарк. Прокашляем вопросы перформанса на сях.
Заодно обсудим планы на будущее. Бенчмарк I/O и использование memory.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052316
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wstТак placement new и есть только вызов конструктора.

MasterZivplacement new -- это как раз вызов конструктора, а не operator new.

Ну началось. Так и знал. placement new - это всего лишь способ передать дополнительные аргументы
в функцию выделения памяти. Даже если используется неперегружаемая версия, как у petrav в примере,
объект полностью создаётся с нуля в указанной области, а не просто вызывается конструктор. Отличие
в вызове констукторов предков и полей.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
#include <iostream>
#include <string>

using namespace std;

class Foo
{
public:
	Foo() {
		cout << m_s << endl;
	}
	
	Foo( string const& a_i ) {
		cout << m_s << endl;
		m_s = a_i;
	}
	~Foo()   { m_s = string(); }
	string m_s;
};

int main()
{
	Foo f; // Конструктор по умолчанию.
	f.m_s = "Bar";
	new (&f) Foo(); // Пустой вывод. Объект полностью пересоздан.
	f.m_s = "Bar";
	new (&f) Foo( "1" ); // Пустой вывод. Объект полностью пересоздан.
	f.m_s = "Bar";
	f.~Foo(); // Явный вызов деструктора.

	return 0;
	// Ооопс! Еще один вызов деструктора!
}



maytonЧто за цепочки? "Method chaining"?

Имелось в виду
Код: plaintext
1.
	Foo() : Foo("") {} 


Оно же delegating constructors.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052336
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MozokДаже если используется неперегружаемая версия, как у petrav в примере,
объект полностью создаётся с нуля в указанной области, а не просто вызывается конструктор. Отличие
в вызове констукторов предков и полей.
После таких слов даже Ваш код рассматривать не хочется.

Вызов конструктора — это и есть создание объекта с нуля. Других вариантов нет. Не рассматриваем сгенерированное исключение в конструкторе — это отдельная тема.

Отличия в вызове конструкторов предков и полей данных нет никакого.

Конструктор конструирует объект. В данной области памяти. С вызовом конструкторов предков и полей. И всё. Просто new перед этим выделяет память для объекта, а в случае placement new мы сами обязаны выделить память.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052338
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozok...
А не… Всё же посмотрел Ваш код.

Там вы дважды допустили утечку памяти. Плюс, возможно, в конце уронили приложение — зависит от реализации класса std::string — хотя тут могут быть тонкости. Это к Московскому.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052341
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravпропущено...

Я не знаю что имелось в виду. Нужно уточнить у Mozok.
Как дела кст. Заходи в наш бенчмарк. Прокашляем вопросы перформанса на сях.
Заодно обсудим планы на будущее. Бенчмарк I/O и использование memory.
Как дела? Я две недели на южном море был. Хорошо что ты не ответил в нашем споре о применимости языков. Пустой был спор.

А какой такой «наш бенчмарк»? Это тема «Тяпничный бенчмарк CPU (part-1)» в разделе «Программирование», где вы меряетесь производительностью .NET и Java?

Ну так в этом споре С++ заведомого в более выигрышном положении (раза в два-три). Если, конечно, узкое горлышко в алгоритме не винчестер и не магнитная лента (для бекапов).
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052342
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBagaMozokпропущено...

Pimpl .


Я не уверен, что именно защита от "целеустремлённого настойчивого буратины". Для особо настойчивых просто добавляется необходимость взятия ещё одного адреса расчёта смещения. Мне кажется, что гораздо более существенными фишками этой техники являются (b) adding new data members to the private struct does not affect binary compatibility; (c) the header file containing the class declaration only needs to #include those other files needed for the class interface, rather than for its implementation. One side benefit is that compilations are faster because the header file changes less often. . Что, собственно, есть способ отделения интерфейса от реализации (без болезней типа необходимости пересобрать всё-всё только из-за изменения одной строчки в хедере).

Почитал по той ссылке в w. Т.о. непрозрачный указатель есть объявление незавершенного типа содержащего все data memberы в header, с его дальнейшим определением в другом месте. Но как это поможет ? Определение класса, даже в том случае если содержит только адрес незавершенного типа со всеми data members, разве не позволит получить адрес этого объекта с его data members ?
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052343
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, скажу честно, идея с использованием непрозрачных указателей мне кажется очень даже симпатичной. Вы используете данную технологию в своих реальных программах ?
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052346
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОбычно топик заканчивается либо решением проблемы. Либо каждый для себя делает выводы.
А тут - философский пинг-понг.

Марк, у нас такого тут нет :)

petrav Что такое «fe»? :)

for example. Редко, но такое сокращение можно встретить. Как правило сокращают используя латинское e. g.(exempli gratia), но мне почему-то больше нравится первый вариант :)

PS
Прошу всех ни в коем случае не ругаться вновь по поводу прошлых обсуждений касаемо Java и других вещей не связанных с ООП на С++.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052348
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryПочитал по той ссылке в w. Т.о. непрозрачный указатель есть объявление незавершенного типа содержащего все data memberы в header, с его дальнейшим определением в другом месте. Но как это поможет ? Определение класса, даже в том случае если содержит только адрес незавершенного типа со всеми data members, разве не позволит получить адрес этого объекта с его data members ?
Pimpl.

Это указатель не на «незавершенный тип/класс» и уж тем более не «непрозрачный указатель». Так не говорят. Это указатель на «предобъявленный класс/тип».

Вот так:
Код: plaintext
1.
2.
class Foo;
Foo *fooPtr = nullptr;


И теперь можно оперировать указателями и ссылками на объекты класса Foo. До тех пор пока в данной единице компиляции ты не начал создавать объекты класса Foo или вызывать его методы.

В С++ не существует способа защиты памяти объектов класса. Всегда можно грязными методами достучаться до чего угодно. При желании.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052349
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav Это указатель не на «незавершенный тип/класс» и уж тем более не «непрозрачный указатель». Так не говорят. Это указатель на «предобъявленный класс/тип».

Но ведь существует в стандарте определение incomplete type, потому так и перевёл. Тогда уж лучше говорить оперируя английскими терминами, чтобы не запутаться в переводе слов в России
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052350
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЭто указатель не на «незавершенный тип/класс» и уж тем более не «непрозрачный указатель». Так не говорят. Это указатель на «предобъявленный класс/тип».
Точнее даже «предобъявленный тип» не говорят. Говорят «предобъявленный класс», «предобъявленный union» и «предобъявленная стуктура».
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052351
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercurypetrav Это указатель не на «незавершенный тип/класс» и уж тем более не «непрозрачный указатель». Так не говорят. Это указатель на «предобъявленный класс/тип».

Но ведь существует в стандарте определение incomplete type, потому так и перевёл. Тогда уж лучше говорить оперируя английскими терминами, чтобы не запутаться в переводе слов в России
Ну, Вам нужно стать уважаемым автором книг по С++ на русском языке. Или хотя бы уважаемым переводчиком. Тогда сможете повлиять на лексику С++ в русском изложении.

А то так и появляются фразы «представление в С++» и никто не может понять что это.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052364
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav А то так и появляются фразы «представление в С++» и никто не может понять что это.

Ну это собственно появилось у BS :)
Но в стандарте такого термина действительно нет. Выше я приводил цитаты как из стандарта так и из BS
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052398
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot SashaMercury]BagaBagaпропущено...
...
Почитал по той ссылке в w. Т.о. непрозрачный указатель есть объявление незавершенного типа содержащего все data memberы в header, с его дальнейшим определением в другом месте. Но как это поможет ? Определение класса, даже в том случае если содержит только адрес незавершенного типа со всеми data members, разве не позволит получить адрес этого объекта с его data members ?

SashaMercury, вам надо использовать любую хорошую (т.е. от классиков) русскоязычную книгу (перевод, конечно же), а то вас с вашей терминологией или не поймут вовсе, или поймут неправильно.

Компилятору нужно знать сигнатуры тех объектов, с которыми он работает. Реализацию ему знать необязательно (не везде). Для того, чтобы ввести что-то в пространство имён, используется forward declaration (по-русски оно звучит как "предварительное объявление" или, иногда, ооочень иногда именуемое также как "опережающее объявление"). Именно это вы и видите. Внутри класса сделано локальное предварительное объявление типа. Если угодно, включая любой заголовочный файл вы тем самым вводите в свое пространство имен множество предварительных объявлений. Где-то в другом месте обязана находиться реализация (не обязательно, к стати, в исходниках - это вполне могут быть бинарные библиотеки). Так вот, это предварительное объявление позволяет компилятору убедиться в синтаксической правильности программы. Если же вы обманули компилятор и не дали ему реализации - на вас заругается линкер на этапе линковки объектных файлов, или, в более разумном случае, тот же компилятор пропоет про что-нибудь 'not found', но _на_более_поздних_этапах. Механизм предварительных объявлений позволяет отделить объявления (интерфейс) от определения (реализации) и избежать необходимости кучу раз перекомпилировать один и тот же код.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052407
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНу так в этом споре С++ заведомого в более выигрышном положении (раза в два-три). Если, конечно, узкое горлышко в алгоритме не винчестер и не магнитная лента (для бекапов).
Это сарказм был по поводу "винчестер и магнитная лента" ?
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052426
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBaga, понял, спасибо. У меня есть книга BS на русском языке (хотя английский там несложный, и я предпочитаю английский вариант). Посмотрю что написано в ней(в русском варианте). Есть Лафоре и Павловская, кроме того. Но лучше у BS. У него лучше всего написано
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052799
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravНу так в этом споре С++ заведомого в более выигрышном положении (раза в два-три). Если, конечно, узкое горлышко в алгоритме не винчестер и не магнитная лента (для бекапов).
Это сарказм был по поводу "винчестер и магнитная лента" ?
Даже интересно где же ты в моих словах заподозрил сарказм?
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052802
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercurypetrav А то так и появляются фразы «представление в С++» и никто не может понять что это.

Ну это собственно появилось у BS :)
Но в стандарте такого термина действительно нет. Выше я приводил цитаты как из стандарта так и из BS
Страуструп использует термин «представление»? Не верю. :-Р
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052842
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmaytonпропущено...

Это сарказм был по поводу "винчестер и магнитная лента" ?
Даже интересно где же ты в моих словах заподозрил сарказм?
У меня просто слов нет. По поводу магнитной ленты. Я не знаю где. В какой предметной области.
В каких задачах. У разработчика на С++ вдруг вдруг внезапно (!) появится задача
что-то кодить и иметь в виду устройством вывода /dev/st или ему подобное.
В скобках замечу что я сам бэкапил много чего но это задачи рода админских
а не девелоперских.

Поэтому мне остаётся только всплеснуть руками.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052899
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravпропущено...

Даже интересно где же ты в моих словах заподозрил сарказм?
У меня просто слов нет. По поводу магнитной ленты. Я не знаю где. В какой предметной области.
В каких задачах. У разработчика на С++ вдруг вдруг внезапно (!) появится задача
что-то кодить и иметь в виду устройством вывода /dev/st или ему подобное.
В скобках замечу что я сам бэкапил много чего но это задачи рода админских
а не девелоперских.
А кто по твоему разработал инструменты (программы) которыми пользуются админы? АС Пушкин — лётчик?

Я могу ошибаться, но насколько я знаю магнитная лента и сейчас живее всех живых. Очень дёшево и очень надёжно для огромных объёмов данных. Бекапы корпоративного уровня. Но очень медленно.

maytonПоэтому мне остаётся только всплеснуть руками.
Да уж. Магнитная лента — старый конь борозды не портит .
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052902
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Но ты не понял основного моего посыла. Магнитная лента настолько медленная, что операции с ней можно даже на Яве программировать. :) Ну это типа шутка.

Ты знаком с интернет-мемом «Ява не тормозит»? Про ту машину слышал?
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052945
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Кстати вспомнил еще одну область применения магнитной ленты и ферромагнитной проволки. Бортовой самописец .

Последнее время, правда, заменяется на флешки. Но вот усилят нам санкции и такой же как я человек в России будет на Си/С++ писать драйвер для устройства с магнитной лентой. Будет даже надёжнее флешки, например, в плане устойчивости к радиации.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39052982
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravКстати вспомнил еще одну область применения магнитной ленты и ферромагнитной проволки. Бортовой самописец .

Последнее время, правда, заменяется на флешки.
да ты шо?
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39053045
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmayton,

Но ты не понял основного моего посыла. Магнитная лента настолько медленная, что операции с ней можно даже на Яве программировать. :) Ну это типа шутка.


Я не знаю. Мне кажется ты живёшь где-то в 1997 году. Твоё представление о Java базируется на срезе
состояния этого проекта в далёком прошлом. Java сегодня обеспечивает пропускную способность
в мегафлопах приближённую к С++ и это даёт возможность применять ее для бизнес-процессов.

Почитай ради интереса про Disruptor к примеру.
...
Рейтинг: 0 / 0
Некоторые вопросы о программировании на C++
    #39053065
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmayton

Кстати вспомнил еще одну область применения магнитной ленты и ферромагнитной проволки. Бортовой самописец .

Последнее время, правда, заменяется на флешки. Но вот усилят нам санкции и такой же как я человек в России будет на Си/С++ писать драйвер для устройства с магнитной лентой. Будет даже надёжнее флешки, например, в плане устойчивости к радиации.
Я возможно покажусь консервативным но я за то чтобы писать на проволоку. Когда речь идёт о
восстановлении инфы из этих ваших чёрных ящиков то аналоговая (по сути) запись даёт
возможность восстановить хоть что-то. Да и катушка с проволокой от удара об землю остаётся
катушкой.

Флешка в самописце - это игра в рулетку. Наеб..тся и вообще ни бита не восстановят.
...
Рейтинг: 0 / 0
25 сообщений из 142, страница 5 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / Некоторые вопросы о программировании на C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]