Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FDSC, Вы писали:
FDS>>На сколько я помню, оператор delete не обнуляет операнд-указатель. А у меня есть привычка некоторые поля классов обнулять при уничтожении, что бы если на них был указатель, он не указывал на когда-то бывшие валидные данные WH>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..
У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FDSC, Вы писали:
FDS>>Вообще-то компилятор должен, вроде, сам сгенерировать дефолтный конструктор ABC(int &) WH>Чего простите? WH>Кому это он должен?
Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует
Здравствуйте, Панда, Вы писали:
П>Ни разу в жизни не использовал ++i. Всегда i++. Жизнь кончена! Пойду в грузчики
Извини, но это не смешно. Это значит, что ни до Мейерса, ни до Саттера руки не дошли
Здравствуйте, FDSC, Вы писали:
FDS>Так, а чем вам i++ не угодило то? Честно скажу, когда я вижу ++i всегда заменяю на i++, потому что ++i раздражает
А системник выбираете по цвету корпуса. Розовый — это так гламурно...
Здравствуйте, FDSC, Вы писали:
FDS>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет.
А если i имеет тип отличный от инта?
Здравствуйте, FDSC, Вы писали:
FDS>Здравствуйте, WolfHound, Вы писали:
WH>>Здравствуйте, FDSC, Вы писали:
FDS>>>На сколько я помню, оператор delete не обнуляет операнд-указатель. А у меня есть привычка некоторые поля классов обнулять при уничтожении, что бы если на них был указатель, он не указывал на когда-то бывшие валидные данные WH>>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..
FDS>У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними
Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...
Здравствуйте, deniok, Вы писали:
D>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...
Не понял о чём речь. Эти случаи были в Delphi, которая не делит как VisualStudio версии на релизные и отладочные. Когда я программирую на C++ ПРАКТИЧЕСКИ НИКОГДА не использую отладочный режим: он усложняет отладку
К тому же, я всегда тестирую то, что даю другим, именно тот exe-файл, который даю, потому что часто бывает, что случайно забыл положить что-то в архив в спешке, или случайно взял не ту версию файла, или ещё что-нибудь в этом духе обнаруживается
Здравствуйте, FDSC, Вы писали:
WH>>Гм. Но ведь весь объект разрушается. И если кто-то будет ссылаться на поле разрушенного объекта то не всели равно что там? Всеравно будет большой бум ибо там может оказатся что угодно после того как память отдадут другому объекту..
FDS>У меня лично в моей практике программирования были случаи, когда обращение по этим областям не вызывало ни Access Violation, ни большого бума. На это место, например, мог быть случайно записан объект того же класса ну и дальше сами понимаете... да и даже если ничего не записано, если в адресном пространстве процесса в выделенных страницах, то, вроде, AV не должно возникать, а значения там могут остаться просто прежними
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FDSC, Вы писали:
FDS>>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует WH>Как проверял?
Скомпилировал и посмотрел, компилит он код с инициализацией через конструктор, которого я не объявлял или нет
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, FDSC, Вы писали:
FDS>>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет. LM>А если i имеет тип отличный от инта?
Какая разница, если команда состоит только из одного "i++;"? "Куда" его тут использовать?
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, FDSC, Вы писали:
FDS>>Так, а чем вам i++ не угодило то? Честно скажу, когда я вижу ++i всегда заменяю на i++, потому что ++i раздражает LM>А системник выбираете по цвету корпуса. Розовый — это так гламурно...
Нет, у Юлии Савичевой образ антигламурности, а я как раз участник её ОФК
Здравствуйте, deniok, Вы писали:
D>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...
P.S. Такие обнуления наоборот помогают раньше выявить ошибку. Но смысла вашей фразы я всё равно не понял: что вы имели ввиду, что в релизе работать не будет...
Здравствуйте, FDSC, Вы писали:
FDS>>>Хм, программисту он должен. Я вот сейчас даже проверил — в VS 2005 генерирует WH>>Как проверял?
FDS>Скомпилировал и посмотрел, компилит он код с инициализацией через конструктор, которого я не объявлял или нет
Код покажи.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, FDSC, Вы писали:
FDS>Здравствуйте, deniok, Вы писали:
D>>Ага, давай закладывайся на это. Потом, после релиза, будешь долго объяснять, что у тебя в дебаге всё работало...
FDS>P.S. Такие обнуления наоборот помогают раньше выявить ошибку. Но смысла вашей фразы я всё равно не понял: что вы имели ввиду, что в релизе работать не будет...
Возможно я просто тебя не понял. Ты писал "про обращение по этим областям" здесь
Здравствуйте, FDSC, Вы писали:
FDS>>>Я, например, считаю, что программист вообще не должен думать о том, создастся или нет, если только он не занят оптимизацией. Благо, компилятор, вообще говоря, без труда может определить, используется ли где-нибудь значение i из i++ или нет. LM>>А если i имеет тип отличный от инта?
FDS>Какая разница, если команда состоит только из одного "i++;"? "Куда" его тут использовать?
Сразу видно, человек ни разу итераторы не писал Постфиксный оператор ++ обычно реализуется следующим образом:
T T::operator++(int)
{
T tmp(*this);
++*this;
return tmp;
}
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Sni4ok, Вы писали:
S>Здравствуйте, hunter_707, Вы писали:
_>>ссылка — далеко не самое удачное изобретение микрософта ...
S>вы настолько грамотны, что до сих пор верите, что стандарт с++ придумали майкрософт?
а вы действительно настолько наивны и до сих пор полагаете, что стандарты в данной области принимаются (или, что еще вернее, могут быть приняты) без него?
Здравствуйте, 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 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, 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 &)