Re[18]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 04.06.07 18:16
Оценка: -1
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, FDSC, Вы писали:


FDS>>На сколько я помню, оператор delete не обнуляет операнд-указатель. А у меня есть привычка некоторые поля классов обнулять при уничтожении, что бы если на них был указатель, он не указывал на когда-то бывшие валидные данные

WH>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..

У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними
Re[9]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 04.06.07 18:18
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, FDSC, Вы писали:


FDS>>Вообще-то компилятор должен, вроде, сам сгенерировать дефолтный конструктор ABC(int &)

WH>Чего простите?
WH>Кому это он должен?

Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует
Re[9]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 04.06.07 19:49
Оценка: -1
Здравствуйте, Панда, Вы писали:

П>Ни разу в жизни не использовал ++i. Всегда i++. Жизнь кончена! Пойду в грузчики

Извини, но это не смешно. Это значит, что ни до Мейерса, ни до Саттера руки не дошли
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[9]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 04.06.07 19:49
Оценка: -2 :))
Здравствуйте, FDSC, Вы писали:

FDS>Так, а чем вам i++ не угодило то? Честно скажу, когда я вижу ++i всегда заменяю на i++, потому что ++i раздражает

А системник выбираете по цвету корпуса. Розовый — это так гламурно...
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[15]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 04.06.07 20:00
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.

А если i имеет тип отличный от инта?
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[19]: А можно пример РЕАЛЬНОГО кода?
От: deniok Россия  
Дата: 04.06.07 20:24
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, WolfHound, Вы писали:


WH>>Здравствуйте, FDSC, Вы писали:


FDS>>>На сколько я помню, оператор delete не обнуляет операнд-указатель. А у меня есть привычка некоторые поля классов обнулять при уничтожении, что бы если на них был указатель, он не указывал на когда-то бывшие валидные данные

WH>>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..

FDS>У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними


Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...
Re[10]: что за ....!!! где C++ программисты?
От: WolfHound  
Дата: 04.06.07 21:09
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует

Как проверял?
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:20
Оценка: -1 :))
Здравствуйте, deniok, Вы писали:

D>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...


Не понял о чём речь. Эти случаи были в Delphi, которая не делит как VisualStudio версии на релизные и отладочные. Когда я программирую на C++ ПРАКТИЧЕСКИ НИКОГДА не использую отладочный режим: он усложняет отладку
К тому же, я всегда тестирую то, что даю другим, именно тот exe-файл, который даю, потому что часто бывает, что случайно забыл положить что-то в архив в спешке, или случайно взял не ту версию файла, или ещё что-нибудь в этом духе обнаруживается
Re[19]: minorlogic, а пояснить минус? (-)
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:21
Оценка:
Здравствуйте, FDSC, Вы писали:

WH>>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..


FDS>У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними


minorlogic, а пояснить минус?
Re[11]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:22
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, FDSC, Вы писали:


FDS>>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует

WH>Как проверял?

Скомпилировал и посмотрел, компилит он код с инициализацией через конструктор, которого я не объявлял или нет
Re[16]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:23
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>Здравствуйте, FDSC, Вы писали:


FDS>>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.

LM>А если i имеет тип отличный от инта?

Какая разница, если команда состоит только из одного "i++;"? "Куда" его тут использовать?
Re[10]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:25
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>Здравствуйте, FDSC, Вы писали:


FDS>>Так, а чем вам i++ не угодило то? Честно скажу, когда я вижу ++i всегда заменяю на i++, потому что ++i раздражает

LM>А системник выбираете по цвету корпуса. Розовый — это так гламурно...

Нет, у Юлии Савичевой образ антигламурности, а я как раз участник её ОФК
Re[20]: А можно пример РЕАЛЬНОГО кода?
От: FDSC Россия consp11.github.io блог
Дата: 05.06.07 07:27
Оценка: -1
Здравствуйте, deniok, Вы писали:

D>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...


P.S. Такие обнуления наоборот помогают раньше выявить ошибку. Но смысла вашей фразы я всё равно не понял: что вы имели ввиду, что в релизе работать не будет...
Re[12]: что за ....!!! где C++ программисты?
От: WolfHound  
Дата: 05.06.07 07:36
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>>>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует

WH>>Как проверял?

FDS>Скомпилировал и посмотрел, компилит он код с инициализацией через конструктор, которого я не объявлял или нет


Код покажи.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: А можно пример РЕАЛЬНОГО кода?
От: deniok Россия  
Дата: 05.06.07 07:45
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, deniok, Вы писали:


D>>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...


FDS>P.S. Такие обнуления наоборот помогают раньше выявить ошибку. Но смысла вашей фразы я всё равно не понял: что вы имели ввиду, что в релизе работать не будет...


Возможно я просто тебя не понял. Ты писал "про обращение по этим областям" здесь
Автор: FDSC
Дата: 04.06.07
. Я имел ввиду, что обращение по областям, где был объект, время жизни которого ты не контролируешь — это потенциальные грабли.
Re[17]: что за ....!!! где C++ программисты?
От: Sergey Россия  
Дата: 05.06.07 09:17
Оценка: 1 (1) +2
Здравствуйте, FDSC, Вы писали:

FDS>>>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.

LM>>А если i имеет тип отличный от инта?

FDS>Какая разница, если команда состоит только из одного "i++;"? "Куда" его тут использовать?


Сразу видно, человек ни разу итераторы не писал Постфиксный оператор ++ обычно реализуется следующим образом:

T T::operator++(int)
{
  T tmp(*this);
  ++*this;
  return tmp;
}
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[25]: ну и зря ...
От: hunter_707 Россия  
Дата: 05.06.07 09:40
Оценка:
Здравствуйте, Sni4ok, Вы писали:

S>Здравствуйте, hunter_707, Вы писали:



_>>ссылка — далеко не самое удачное изобретение микрософта ...


S>вы настолько грамотны, что до сих пор верите, что стандарт с++ придумали майкрософт?


а вы действительно настолько наивны и до сих пор полагаете, что стандарты в данной области принимаются (или, что еще вернее, могут быть приняты) без него?
Re[14]: Move Constructors
От: nixxxin  
Дата: 05.06.07 10:40
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Ну для начала *f=*b не скомпилируется из-за приватного наследования.


Это почему это? тут все ок.
Не скомпилится Foo* b=new Bar(200);
Re[15]: Move Constructors
От: Sergey Россия  
Дата: 05.06.07 10:56
Оценка:
Здравствуйте, nixxxin, Вы писали:

N>Здравствуйте, Sergey, Вы писали:


S>>Ну для начала *f=*b не скомпилируется из-за приватного наследования.


N>Это почему это?


Потому что наследование приватное.

N>тут все ок.


VC8sp1
error C2243: 'type cast' : conversion from 'Bar *' to 'const Foo &' exists, but is inaccessible


N>Не скомпилится Foo* b=new Bar(200);


Это тоже.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[8]: что за ....!!! где C++ программисты?
От: Константин Л. Франция  
Дата: 05.06.07 11:27
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, WolfHound, Вы писали:


WH>>Я честно говоря не помню что сказано в писании и мне лень там копаться но как насчет такого кода:

WH>>
WH>>struct ABC
WH>>{
WH>>    int& a;
WH>>};

WH>>int a = 123;
WH>>ABC abc = { a };
WH>>



WH>>VC++8 даже и предупреждения не выдал. А просто скомпилил и отработал как ожидалось.


FDS>Вообще-то компилятор должен, вроде, сам сгенерировать дефолтный конструктор ABC(int &)


Не должен.

Компилятор умеет генерировать:

1) default ctor
2) copy ctor
3) operator =
4) dtor

все.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.