Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить синтаксис паскаля(делфи) 
:(
    Опции темы
Lazin
Дата 31.5.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Alexeis, ты не отвечаешь на мой ответ © , у тебя разрыв?
PM MAIL Skype GTalk   Вверх
Alexeis
Дата 31.5.2008, 13:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Lazin @  31.5.2008,  10:06 Найти цитируемый пост)
Alexeis, ты не отвечаешь на мой ответ © , у тебя разрыв? 

  Я что маньяк круглые сутки сидеть на форуме  smile .

Хочешь пример?
Код

#define false true


  Попробуй после это скомпилировать любую программу. Синтаксис не просто может меняться, его можно превратить во что угодно, так что потом не найдешь концов. 
Потом посмотри чего можно замутить в операторе if . Это ж форменное безобразие! Таких опасных фич. в синтаксисе десятки. Например структуры. Нет ни какой гарантии что они будут бинарно совместимы с чем нибудь. По правилам структуру можно пронаследовать от класса  smile 
  Сравни с Delphi Record! Структура без возможности наследования, безо всяких виртуальных функций и деструкторов, чистые бинарные данные в строгом порядке. Можно создавать в стеке, по дефолту ни чем не инициализируется. Все четко и по делу. 
  На счет фигурных скобок, опять же они мелкие и плохо заметные, постоянно путаешься какая скобка от какого блока. Посмотри на синтаксис switch, не дай бог забыть break после очередного case. Идем дальше операторы цикла while. На кой черт он вообще сдался в С++  если есть цикл for, который его заменяет на 100%, намного лучше его и логичнее, включает в себя секцию инициализаций, секцию условий и секцию для пост операций преимущественно для инкремента счетчиков.
  Макросы - еще одно жуткое изобретение при наличии инлайн функций. Какое количество трудноанализируемых ошибок можно сделать на них!
  Межмодульное связывание extern smile . Что с чем связывается? Где объявление? При том синтаксис допускает ЛОКАЛЬНОЕ связывание extern переменных. Ужоснах просто. Просто кладезь случайных ошибок. 
  Объявление функций классов. Можно запросто объявить функцию и ни где ее не реализовать. И это будет правильно. 

  Я согласен, что все это можно не использовать когда программу пишешь сам, но реальность такова, что помимо написания новых программ нужно осуществлять поддержку старых написанных другими людьми с их естественной кривизной рук. Уверяю тебя такого безобразия на Delphi встретить нельзя.
 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Lazin
Дата 31.5.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



ну во первых, вся эта чертовщина унаследована от С, во вторых иногда это бывает нужно

Цитата(Alexeis @  31.5.2008,  13:30 Найти цитируемый пост)
#define false true

эдакое самоубийство smile 

Цитата(Alexeis @  31.5.2008,  13:30 Найти цитируемый пост)
Потом посмотри чего можно замутить в операторе if . Это ж форменное безобразие! Таких опасных фич. в синтаксисе десятки. Например структуры. Нет ни какой гарантии что они будут бинарно совместимы с чем нибудь. По правилам структуру можно пронаследовать от класса

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


Цитата(Alexeis @  31.5.2008,  13:30 Найти цитируемый пост)
синтаксис switch, не дай бог забыть break после очередного case

а что если он там и не нужен?

Код

switch(i)
{
 case 1:
 case 2:
   ............
 break;
 case 3:
   ............
 break;
 //etc....
};



Цитата(Alexeis @  31.5.2008,  13:30 Найти цитируемый пост)
Идем дальше операторы цикла while. На кой черт он вообще сдался в С++  если есть цикл for, который его заменяет на 100%, намного лучше его и логичнее, включает в себя секцию инициализаций, секцию условий и секцию для пост операций преимущественно для инкремента счетчиков.

Код


//true - успешная инициализация
bool Initialized();

while( not Initialized() ) {Sleep(10000);}



Цитата(Alexeis @  31.5.2008,  13:30 Найти цитируемый пост)
Межмодульное связывание extern smile . Что с чем связывается? Где объявление? При том синтаксис допускает ЛОКАЛЬНОЕ связывание extern переменных. Ужоснах просто. Просто кладезь случайных ошибок. 

я им пользовался за всю жизнь 2 раза

Цитата(Alexeis @  31.5.2008,  13:30 Найти цитируемый пост)
Объявление функций классов. Можно запросто объявить функцию и ни где ее не реализовать. И это будет правильно. 

зато пользователь класса видит только интерфейс класса, а не реализацию, намного меньше зависимостей в коде, например

foo.h
Код

#include <все что нужно для реализации bar>
class Foo
{
void bar()
{
  //реализация bar
}
};


или

foo.h
Код

class Foo
{
void bar();
};


foo.cpp
Код

#include <все что нужно для реализации bar>
#include <foo.h>

void Foo::bar()
{
  //реализация bar
}


пользователь подключает только Foo.h, но в первом случае он неявно подключает кучу других заголовочных файлов. во втором случае можно забыть реализовать ф-ю, но эту ошибку легко найти
Цитата(Alexeis @  31.5.2008,  13:30 Найти цитируемый пост)
Уверяю тебя такого безобразия на Delphi встретить нельзя.

а как-же славные традиции писать программу в обработчиках событий  smile  

Это сообщение отредактировал(а) Lazin - 31.5.2008, 14:45
PM MAIL Skype GTalk   Вверх
nerezus
Дата 31.5.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

опять же они мелкие и плохо заметные, постоянно путаешься какая скобка от какого блока.
 А чем begin..end путается хуже? ))
лезть в этот разговор не хотел, но прямо таки интересно стало )

P.S. ну раз все равно залез, то:
C++ - это гибкость.
Pascal - это строгость.

Естественно гибкий язык имеет бОльшие возможности, но строгость - тоже хорошо.

Например мне нравится делфи во всем, кроме синтаксиса паскалеподобного. Именно за строгость и однозначность.

Цитата

а как-же славные традиции писать программу в обработчиках событий
 Везде такая традиция. Но только у нубов либо в программах уровня "хеллоуорлд".

Цитата

#define false true
 Кто это написал - тот дурак либо западлостроитель. Не ставь в пример дураков.


Цитата

Уверяю тебя такого безобразия на Delphi встретить нельзя.
 Уверяю тебя, можно. Я в универе учился, у одногруппников такое видел =\
Причем везде. Самое сложное - это не разгребать код, а алгоритм. Сложно сть несоизмерима ;)
Так что разбор кода будем считать меньше погрешности.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Mayk
Дата 31.5.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Цитата(JackYF @  31.5.2008,  14:50 Найти цитируемый пост)
Аналог boost::lambda уже появился? smile 

надеюсь что нет smile 
Если это появится раньше полноценных замыканий/лямбд в дельфи (кстати как с этим в дельфи.нет?)  то это смерти подобно

Добавлено через 59 секунд
Жестокой! Беспощадной! Безжалостной смерти!

Добавлено через 9 минут и 48 секунд
А может разделим эту эпическую тему и половину выкинем нафик в релвойну к подобному треду?



Цитата(Alexeis @  31.5.2008,  17:30 Найти цитируемый пост)
Уверяю тебя такого безобразия на Delphi встретить нельзя.

На дельфи полно другого безобразия. 
Из запомненго мною локальные ф-ции, которые должны были быть ф-циями класса. 

Код

procedure Class.Method1;
var ...
  procedure innerProcedure;
  .... {пара десятков строк}
  end {of innerProcedure}; 
...

procedure Class.Method2;
var ...
  procedure innerProcedure;
  .... {пара десятков строк таких же как и в Class.Metod1.InnerProcedure}
  end {of innerProcedure}; 
...



И конечно же наименования элементов на форме(такая же феерия и на builder c++, да)
Код

if CheckBox3.Enabled  then
begin
    CheckBox1.Enabled := LineEdit1.Enabled;
    CheckBox2.Enabled := LineEdit1.Enabled;
    CheckBox3.Enabled := LineEdit1.Enabled
else
    CheckBox1.Enabled := LineEdit2.Enabled;
    CheckBox2.Enabled := CheckBox5.Enabled;
    CheckBox3.Enabled := LineEdit2.Enabled
end;




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 31.5.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Код

bool Initialized();
while( not Initialized() ) {Sleep(10000);}


Код


for(;not Initialized();) 
{
  Sleep(10000);
}


Цитата(Lazin @  31.5.2008,  13:42 Найти цитируемый пост)
а что если он там и не нужен?

  Если он не нужен, то должна быть команда сквозного прохода. В С++ любят так делать. Фича используется в 1% случаев, а предусматривать обход нужно в остальных 99% случаев. 
 
Цитата(Lazin @  31.5.2008,  13:42 Найти цитируемый пост)
я им пользовался за всю жизнь 2 раза

  А мне приходиться дорабатывать софт где такие экстерны исчисляются десятками. 
 
Цитата(Lazin @  31.5.2008,  13:42 Найти цитируемый пост)
эдакое самоубийство

  Это не самоубийство а пример того как опасны средства С++. Понятно что это вырожденный пример, но вред такого характера могут нести макросы. 

На счет возможностей языка. 
  Попробуйте на С++ создать класс у которого будут 2е виртуальные функции с одним именем и одинаковым перечнем параметров или реализовать интерфейс без использования виртуальных методов, попробуйте делегировать реализацию интерфейса объекту члену класса. Или создать объект по его строковому имени. Можно ли в С++ вызвать функцию зная только ее имя (строка). Может ли статическая функция быть виртуальной? В Delphi можно реализовать полноценный Singleton вообще не создавая экземпляра класса.
  Как видите тонкими механизмами делфи не обделен тонкими механизмами, при этом он более логичен.
  Взять хотя бы циклы. Из 3х циклов нет ни одного лишнего. Цикл for только для целых и перечисляемых типов, цикл While с предусловием цикл Repeat с постусловием. Оператор выбора простой и очевидный. Если это функция так она и называется функцией, процедура называется процедурой. Если объявляется переменная, то будь добр пиши var, перешел к объявлению типа пиши type. А то объявил переменную фиг знает где, потом скопипастил код и закрыл имя переменной из внешней области. 
  Теперь пройдусь по массивам. В С++ некоторые вместо нормального a[i] умудряются писать *(a + 1), плюс в сочетании. Массив - указатель палка о двух концах. В функции никак не возможно определить что тебе передали массив или указатель. В Delphi строго, если передаешь указатель, то это указатель, если массив, то это массив. 

  Так что строгости в любом случае больше.

Добавлено через 4 минуты и 2 секунды
Цитата(Mayk @  31.5.2008,  14:56 Найти цитируемый пост)
Из запомненго мною локальные ф-ции, которые должны были быть ф-циями класса. 

  Это механизм аналогичный блокам в С++. В каждой локальной функции могут быть свои локальные переменные, при этом она видит переменные из внешней функции. 
Просто это блоки определенные до их использования. Вполне себе рабочий механизм, правда в ООП уже малоэффективен.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Lazin
  Дата 31.5.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(Alexeis @  31.5.2008,  16:13 Найти цитируемый пост)
Попробуйте на С++ создать класс у которого будут 2е виртуальные функции с одним именем и одинаковым перечнем параметров

это как? как компилятор будет определять какую из них вызывать?
Код

class A
{
  public:
  virtual void aaa() {}
  virtual void aaa() {}
};

A& var ( new A() );
var.aaa();//<--- Alexis, что здесь вызывать?


Цитата(Alexeis @  31.5.2008,  16:13 Найти цитируемый пост)
реализовать интерфейс без использования виртуальных методов

на то нам и дан паттерн NVI smile 
Цитата(Alexeis @  31.5.2008,  16:13 Найти цитируемый пост)
попробуйте делегировать реализацию интерфейса объекту члену класса

легко

Код

class A
{
  public:
  void do_work()  {.....};
};

class B
{
  A state_;
  public:
  void do_work()
  {
    state_.do_work();
  }
};


Цитата(Alexeis @  31.5.2008,  16:13 Найти цитируемый пост)
Или создать объект по его строковому имени. Можно ли в С++ вызвать функцию зная только ее имя (строка).

да, рефлексии у нас нет

Цитата(Alexeis @  31.5.2008,  16:13 Найти цитируемый пост)
Может ли статическая функция быть виртуальной?

 smile как это можно использовать
Цитата(Alexeis @  31.5.2008,  16:13 Найти цитируемый пост)
Как видите тонкими механизмами делфи не обделен тонкими механизмами, при этом он более логичен.

ну просто ты привык к нему, вот он и кажется логичным, мне например не понятно, почему функция и процедура, это разные вещи...
Да, в С++ много чего нет, но...
что-бы было если бы у бабушки был член... 
наверное она бы была не бабушкой а дедушкой smile 
так и здесь, будь в с++ рефлешн, интерфейсы и прочие фишки делфи, то это был бы другой язык
PM MAIL Skype GTalk   Вверх
nerezus
Дата 31.5.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

В Delphi можно реализовать полноценный Singleton вообще не создавая экземпляра класса.
  Это как?  smile 


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Alexeis
Дата 31.5.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Lazin @  31.5.2008,  16:44 Найти цитируемый пост)
это как? как компилятор будет определять какую из них вызывать?

  В таком как в примере это никому и не нужно. При наследовании виртуальной функции, можно запретить предкам начиная с определенного колена вызывать виртуальную функцию того класса, который реально создан. Т.е. в одном из наследников вводиться новый виртуальный метод, точно такой же как и прежний, но с директивой reintroduce, после чего в таблицу VMT вводиться новая запись, а старая остается. Т.о. можно добиться разных действий, в зависимости от того к какому из предков был приведен объект. Довольно тонкий механизм, но в VCL используется.
  Статические виртуальные функции используются при приведении классов наследников к классам предов (не путать с приведением объектов). Фактически для класса создается своя таблица VMT. 
  На счет синглтона. В Delphi каждая статическая функция получает один неявный параметр как и обычная, но это не указатель на объект, а указатель на класс, т.е. ведет себя точно также как и обычная, можно определять статические поля, виртуальные статические функции, которые в наследнике перекрываются. Класс может иметь свои свойства, точно также как объект. Можно создать сколько угодно переменных класса и при этом это всегда будет тот же самый класс. Объявляется тип класса точно также как и обычный.
Код

type 
  TObjClass = class of TObject;
var
  cls : TObjClass;

При этом он является классом обычных объектов, в том смысле, что создает объекты и объекты этого класса имеют доступ ко всем статическим полям и функциям.


Цитата(Lazin @  31.5.2008,  16:44 Найти цитируемый пост)
ну просто ты привык к нему, вот он и кажется логичным, мне например не понятно, почему функция и процедура, это разные вещи...

  Смотри при выходе из процедуры в Delphi ты пишешь exit, т.е. выхожу, в С++ тоже самое действие будет называться "возвращаю ничего".

  Код Delphi самоописателен. Чисто виртуальная функция пишется и директивой abstract, перекрыл функцию пиши override. Вызываешь виртуальный метод предка из перекрытого пишешь Inherited. Это по любому более читабельно, чем если ничего не писать.

Мне кажется совместимость с C сильно испортила язык С++.  Можно было обойтись раздельной компиляцией. Билдер, например, может скомпилировать код делфи, код C++ и слинковать в один исполняемый файл. И ни каких проблем.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 1.6.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Alexeis, 
1. в Delphi объекты классов можно создать в стеке?
2. можно ли определить свой аллокатор для класса? (аналог перегрузки new в С++)
3. есть ли аналог спецификатора volatile?
4. есть ли аналог элипсисов? (оператор ...)
5. можно ли создать массив в стеке с неконстантным значением числа элементов? (типа int array[count], где count - не константа)
6. есть ли аналог объединений? (union)
7. есть ли аналог mutable-полей?
8. есть ли возможность метапрограммирования?
9. есть ли аналог виртуального наследования?
10. есть ли встроенная поддержка комплексной арифметики?
11. есть ли аналог спецификатора restrict?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Lazin
Дата 1.6.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



12. есть ли аналог ссылок
13. есть ли аналог модификатора const для параметров функций
14. есть ли спецификации исключений
15. какие возможности управления временем жизни объектов в стеке
16. можно-ли на Delphi реализовать функтор
17. можно-ли реализовать смарт-поинтер
18. можно-ли реализовать сборку мусора, используя только возможности стандартных библиотек

как уже задолбал этот холивар, Delphi-программисты не понимают что дают возможности языка С++, какие паттерны можно реализовать и тд. 
например идиома RAII, без нее очень сложно пользоваться исключениями... но в паскале это невозможно, так как там объекты классов не создаются в стеке, можно конечно сделать то-же самое с помощью finaly(наверное???), но это уже совсем не то, ведь это делается вручную а компилятор С++ делает такие вещи сам.
Конечно делфи для чего-то то-же хорош, наверное, но для чего конкретно я не знаю  smile 


PM MAIL Skype GTalk   Вверх
Alexeis
Дата 1.6.2008, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(MAKCim @  1.6.2008,  10:44 Найти цитируемый пост)
1. в Delphi объекты классов можно создать в стеке?

Только классические паскалевские (не VCL ские)
Цитата(MAKCim @  1.6.2008,  10:44 Найти цитируемый пост)
2. можно ли определить свой аллокатор для класса? (аналог перегрузки new в С++)

  Угу.
Цитата(MAKCim @  1.6.2008,  10:44 Найти цитируемый пост)
3. есть ли аналог спецификатора volatile?

  Не знаю че за хрень
4. есть ли аналог элипсисов? (оператор ...)
  Тоже ни знаю че такое
Цитата(MAKCim @  1.6.2008,  10:44 Найти цитируемый пост)
6. есть ли аналог объединений? (union)

  угу
Цитата(MAKCim @  1.6.2008,  10:44 Найти цитируемый пост)
7. есть ли аналог mutable-полей?

  Не знаю че это такое
Цитата(MAKCim @  1.6.2008,  10:44 Найти цитируемый пост)
8. есть ли возможность метапрограммирования?

  Аналогично, звучит как-то абстрактно
Цитата(MAKCim @  1.6.2008,  10:44 Найти цитируемый пост)
9. есть ли аналог виртуального наследования?

  Тоже не слышал че такое
...
  Бр... надоело ты бы пояснял хоть что это такое, а то ведь термины могут отличаться.

Цитата(Lazin @  1.6.2008,  11:32 Найти цитируемый пост)
как уже задолбал этот холивар, Delphi-программисты не понимают что дают возможности языка С++, какие паттерны можно реализовать и тд. 


  Не я его начал. Ты бы видел как изящно реализуются многие паттерны на Delphi. С++ просто нервно курит в сторонке.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 1.6.2008, 13:13 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Alexeis @  1.6.2008,  12:49 Найти цитируемый пост)
Не знаю че за хрень

грубо говоря
запрет кэширования переменной
Код

extern volatile int variable;
...
fo (int i = 0; i < variable; ++i) {
...
}

компилятор не будет использовать регистр для хранения variable в цикле, т. е на каждой итерации будет осуществляться чтение variable


Цитата(Alexeis @  1.6.2008,  12:49 Найти цитируемый пост)
Тоже ни знаю че такое

функции с переменным числом параметров
Код

void f(const char * list, ...) {
}



Цитата(Alexeis @  1.6.2008,  12:49 Найти цитируемый пост)
Не знаю че это такое

поля класса, которые можно изменять для константного объекта


Цитата(Alexeis @  1.6.2008,  12:49 Найти цитируемый пост)
Аналогично, звучит как-то абстрактно

можно ли в Delphi вычислить факториал константы во время компиляции?

Цитата(Alexeis @  1.6.2008,  12:49 Найти цитируемый пост)
Тоже не слышал че такое

Код

class A {
};

class B: public A {
};

class C: public A {
};


требуется создать класс D, унаследованный от B, C, и при этом B, C, D будут использовать один и тот же объект A

Добавлено через 3 минуты и 19 секунд
Цитата(Lazin @  1.6.2008,  12:32 Найти цитируемый пост)
можно-ли реализовать сборку мусора, используя только возможности стандартных библиотек

перегрузка глобального new и boost threads?
(хотя boost threads вроде пока не стандартная)

Добавлено через 7 минут и 37 секунд
Цитата(Alexeis @  1.6.2008,  12:49 Найти цитируемый пост)
Только классические паскалевские (не VCL ские)

плохо
да и вообще, как-то паскаль и делфи не сильно со стеком дружат


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Alexeis
Дата 1.6.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(MAKCim @  1.6.2008,  12:13 Найти цитируемый пост)
компилятор не будет использовать регистр для хранения variable в цикле, т. е на каждой итерации будет осуществляться чтение variable

  Это вообще, не имеет отношения к языку. Скорее директива определенного компилятора.

Цитата(MAKCim @  1.6.2008,  12:13 Найти цитируемый пост)
функции с переменным числом параметров

  Делается, но несколько иным образом через array of const, при этом число параметров получается автоматически. Кстати в С++ нельзя получить число элементов динамического массива, типа High(mas)   smile 
 
Цитата(MAKCim @  1.6.2008,  12:13 Найти цитируемый пост)
поля класса, которые можно изменять для константного объекта

  В этом смысле существует несколько другой механизм. Механизм ReadOny и WriteOnly свойств, ограничивающих возможность изменения состояния объекта.

Цитата(MAKCim @  1.6.2008,  12:13 Найти цитируемый пост)
требуется создать класс D, унаследованный от B, C, и при этом B, C, D будут использовать один и тот же объект A

  Класс будет использовать объект  smile . Чета тут перемудрили ИМХО.

Цитата(MAKCim @  1.6.2008,  12:13 Найти цитируемый пост)
плохо
да и вообще, как-то паскаль и делфи не сильно со стеком дружат

  Очень деже неплохо, стековые объекты нарушают концепцию безопасности ООП в Delphi. Этот механизм неэффективен для больших объектов, а маленькие стековые объекты есть, это Record. Все четко разделено. Объект маленький - делай Record это будет быстро  + копирование по значению, большой - делай в куче.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
W4FhLF
Дата 1.6.2008, 14:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Цитата(Alexeis @  1.6.2008,  14:04 Найти цитируемый пост)
 Это вообще, не имеет отношения к языку.


Часть стандарта. 

Цитата(Alexeis @  1.6.2008,  14:04 Найти цитируемый пост)
 Делается, но несколько иным образом через array of const, при этом число параметров получается автоматически.


Можно пример? Мне кажется, что использование массивов к эллипсису никакого отношения не имеет. 

Цитата(Alexeis @  1.6.2008,  14:04 Найти цитируемый пост)
 Кстати в С++ нельзя получить число элементов динамического массива, типа High(mas)


Для этого, в прицнипе, и существуют стандартные STL-контейнеры. 

Цитата(Alexeis @  1.6.2008,  14:04 Найти цитируемый пост)
  Класс будет использовать объект   . Чета тут перемудрили ИМХО.


Нет, на самом деле всё просто.

Обычное наследование:
user posted image

Виртуальное:
user posted image



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.