
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.30] |
![]() |
|
Страницы: (245) « Первая ... 237 238 [239] 240 241 ... 244 245 ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#3571
,
|
|
Сообщ.
#3572
,
|
|
|
Цитата Shaggy @ Но я просил это вместе с подсчетом ссылок ![]() |
![]() |
Сообщ.
#3573
,
|
|
Цитата Shaggy @ Ну вот это я имел в виду под правилами, исключениями и избыточным весом. Интересно, каков нынче порог вхождения в Дельфи? хочешь ручное, используй объектные ссылки(счётчик использоваться не будет) хочешь автоматическое, используй интерфейсные ссылки |
![]() |
Сообщ.
#3574
,
|
|
Цитата D_KEY @ Но я просил это вместе с подсчетом ссылок В моем примере на C++ будет работать подсчет ссылок. реализация auto в теме Delphi vs c++ была |
Сообщ.
#3575
,
|
|
|
Цитата Shaggy @ хочешь ручное, используй объектные ссылки(счётчик использоваться не будет) хочешь автоматическое, используй интерфейсные ссылки Вот это и вызывает наибольший WAT у незнакомых с такими тонкостями программистов. |
Сообщ.
#3576
,
|
|
|
Цитата Shaggy @ Цитата D_KEY @ Но я просил это вместе с подсчетом ссылок В моем примере на C++ будет работать подсчет ссылок. реализация auto в теме Delphi vs c++ была auto - это примитивный вывод типов. Ты, наверное, имел в виду shared_ptr. Да, вроде была реализация в одном из холиваров. |
![]() |
Сообщ.
#3577
,
|
|
![]() |
Сообщ.
#3578
,
|
|
Цитата korvin @ Мне как-то не охота копаться в исходниках компилятора Делфей, да и нет их у меня мимо... ляпы твои |
Сообщ.
#3579
,
|
|
|
Shaggy, нет, языка. Даже C++ лучше
|
![]() |
Сообщ.
#3580
,
|
|
Цитата D_KEY @ нет, языка. Даже C++ лучше шикарно.... korvin написал программу, которая не компилируется но это проблемы языка вот С++ компилирует всё... так держать! |
Сообщ.
#3581
,
|
|
|
Цитата Qraizer @ И как бы знаю, что конструируемый объект имеет ссылку, поэтому его счётчик нулевым не может быть по определению. Ты как бы путаешь свой "примитивный" приплюснутый Ц, в котором нет разницы между объектом (наследником pure virtual) и интерфейсом, и дельфи, в котором эта разница есть - в дельфи ведется подсчет ссылок не на объекты, а только на (реализуемые ими) интерфейсы. Хочешь работать с интерфейсами в соотв-ии с контрактом IUnknown - забудь об объекте и используй только ссылки на его интерфейс. А если хочешь "забить" на контракты и "жить вечно", то либо переопределяй методы _AddRef и _Release, либо сохраняй в самом объекте (или где-то еще) "резервную" ссылку на его интерфейс, ну или просто вызови _AddRef. |
Сообщ.
#3582
,
|
|
|
Если взять ту же Java, там interface - не более чем средство описания модели, и никакие побочные эффекты в работу с объектом не привносит (там правда ЕМНИП и подсчета ссылок нет, а используется граф ссылок). Как справедливо указали в комментах хабровской заметки, интерфейсы в Delphi - это средство работы с Microsoft COM, что и вносит неприятные побочные эффекты. Были бы они именно традиционными интерфейсами, не было бы таких проблем.
|
Сообщ.
#3583
,
|
|
|
Цитата Shaggy @ Цитата D_KEY @ нет, языка. Даже C++ лучше шикарно.... korvin написал программу, которая не компилируется Как это не компилируется? Добавлено leo, ты что-нибудь кроме delphi использовал? |
Сообщ.
#3584
,
|
|
|
Цитата leo @ в дельфи ведется подсчет ссылок не на объекты, а только на (реализуемые ими) интерфейсы. Вот это кстати еще больший WAT. Добавлено Цитата leo @ либо переопределяй методы _AddRef и _Release И эти люди ругают C++ за большое количество неочевидностей ![]() |
![]() |
Сообщ.
#3585
,
|
|
leo, объясни на кой хрен мне сдались интерфейсы? Я работаю с объектами. Интерфейсы не надо подсчитывать, они никого не волнуют. Они ничего не хранят, они вообще ничто.
|