Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 60 61 [62] 63 64 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#916
,
|
|
|
|
Цитата Qraizer @ Поставишь CONST и потом ещё не забыть галку чекнуть, мол, слышь, вот там если CONST увидишь, так это..., то мамой клянусь CONST, без базара. они достались в наследство от TP/BP только всё наоборот, галку надо ставить, чтобы присвоения допускались... мамой кылянусь... обычные константы, это просто поименованные числа, например... типизированные же хранятся в секции данных(и никогда в стеке), и к ним можно получить доступ в run-time, адрес например получить поэтому возможен такой финт: ![]() ![]() {$WRITEABLECONST ON} procedure test; const c:byte = 0; begin writeln(c); inc(c); end; ... begin test; // выведет 0 test; // выведет 1 end; иногда(очень редко) это может быть удобно кроме того, директива {$WRITEABLECONST ON} имеет локальную область действия т.е. в каком-то участке кода эту константу присваивать можно, а в каком-то нет... очень похоже на ваш const |
|
Сообщ.
#917
,
|
|
|
|
Цитата Shaggy @ иногда(очень редко) это может быть удобно кроме того, директива {$WRITEABLECONST ON} имеет локальную область действия т.е. в каком-то участке кода эту константу присваивать можно, а в каком-то нет... Странные какие-то константы, тебе не кажется? Цитата очень похоже на ваш const ![]() У нас нельзя изменять const.Не путай. Ты можешь сказать ссылке, что она указывает на константный объект и передать ей как действительно константный объект, так и обычный. Но не наоборот(нельзя сказать ссылке, что она указывает на неконстантный объект, а передать ей константный). И сколько можно объяснять... |
|
Сообщ.
#918
,
|
|
|
|
Цитата D_KEY @ У нас нельзя изменять const.ты можешь написать const, а можешь и не написать {$WRITEABLECONST OFF} {$WRITEABLECONST ON} |
|
Сообщ.
#919
,
|
|
|
|
Цитата Shaggy @ Цитата D_KEY @ У нас нельзя изменять const.ты можешь написать const, а можешь и не написать Эээ. Ну да. Я могу сделать константу или не сделать константу. Причем тут твои директивы? |
|
Сообщ.
#920
,
|
|
|
|
Возвращаясь к теме интерфейсов.
Как я заметил, MyNameIsIgor написал реализацию интерфейсов без наследования от базового класса, ну что же, от необходимой писанины понижения видимости "лишних" методов вы избавились, но за это расплачиваетесь полным отсутствием гарантий выполнения контракта. меняем ![]() ![]() interface read_only { read_only(const read_only&); const read_only& operator= (const read_only&); public: read_only() {} virtual int get_x() const = 0; virtual std::string get_y() const = 0; virtual ~read_only() {} }; на ![]() ![]() interface read_only { read_only(const read_only&); const read_only& operator= (const read_only&); public: read_only() {} virtual int SOME_x() const = 0; virtual std::string SOME_y() const = 0; virtual ~read_only() {} }; Всё замечательно компилируется. |
|
Сообщ.
#921
,
|
|
|
|
DesweR, а тот мой небольшой набросок на тему видел? Что в нем не так? Или я все-таки не совсем тебя понял?
|
|
Сообщ.
#922
,
|
|
|
|
Цитата D_KEY @ DesweR, а тот мой небольшой набросок на тему видел? Те же недостатки, что и у MyNameIsIgor. |
|
Сообщ.
#923
,
|
|
|
|
Цитата DesweR @ Цитата D_KEY @ DesweR, а тот мой небольшой набросок на тему видел? Те же недостатки, что и у MyNameIsIgor. Пример, пожалуйста. |
|
Сообщ.
#924
,
|
|
|
|
|
Сообщ.
#925
,
|
|
|
|
Цитата D_KEY @ ![]() ![]() class ISomeClass { public: virtual void SetY(int y) = 0; protected: ~ISomeClass(); }; class TSomeClass : public ISomeClass { public: int GetX() const; void SetX(int x); int GetY() const; /*override*/ void SetY(int y); //... }; void client1(const TSomeClass &obj) { // не можем изменить состояние obj } void client2(ISomeClass &obj) { // можем вызывать только obj.SetY(some_value) } Еще раз, что мне на что нужно поменять, чтобы мой вариант стал некорректным? |
|
Сообщ.
#926
,
|
|
|
|
Цитата D_KEY @ D_KEY, ну так и мы можем применить const_cast<>, а можем и нет. Эээ. Ну да. Я могу сделать константу или не сделать константу. Причем тут твои директивы? |
|
Сообщ.
#927
,
|
|
|
|
Цитата Qraizer @ Цитата D_KEY @ D_KEY, ну так и мы можем применить const_cast<>, а можем и нет. Эээ. Ну да. Я могу сделать константу или не сделать константу. Причем тут твои директивы? ![]() Да, но вообще-то, применив его к настоящей константе, мы получим UB, разве нет? Если мне не изменяет память, const_cast появился в языке раньше механизма mutable, как раз для решения тех же вопросов, а не для того, чтобы менять значения констант. Это все-таки не тоже самое, что {$WRITEABLECONST ON}. |
|
Сообщ.
#928
,
|
|
|
|
Цитата DesweR @ Как я заметил, MyNameIsIgor написал реализацию интерфейсов без наследования от базового класса, ну что же, от необходимой писанины понижения видимости "лишних" методов вы избавились Я не старался от этого избавиться. Тот код, который запостил Повстанець, лично меня устраивает. Я просто сделал чуть ли не построчный перевод дельфи в плюсы. Цитата DesweR @ но за это расплачиваетесь полным отсутствием гарантий выполнения контракта. Ээээ... Какого контракта? ![]() Цитата DesweR @ меняем ... на ... Всё замечательно компилируется. Это шутка такая? Так мне смешно, ага. Добавлено Кстати, ещё немного на вентилятор |
|
Сообщ.
#929
,
|
|
|
|
Цитата MyNameIsIgor @ Кстати, ещё немного на вентилятор Она бесплатна, Вот это - плюс! А вообще - не такое уж и на вентилятор, вполне себе нормальная точка зрения. Хорошо что автор понимает, чтоЦитата Многое из того что давным-давно есть в Delphi совсем недавно стало появляться... Видать значит не так плох тот Дельфи, правда? |
|
Сообщ.
#930
,
|
|
|
|
Цитата --Ins-- @ Видать значит не так плох тот Дельфи, правда? Это был, скорее, реверанс-ностальгия, не более Вообще всё новое - хорошо забытое старое. Всё это где-то уже было. |