Re[4]: Как я завалил собеседование
От: LuciferMoscow Россия  
Дата: 22.01.07 19:01
Оценка:
Здравствуйте, fGordon, Вы писали:

G>>> просто вот както в жизни <привык не доверять таким вот "по умолчанию" методам>. <привык описывать, если они нужны, "ручками">.

КД>>Что-то я не понял зависимости между первым и вторым
G>Что не понятного? Я опишу конструктор копии руками. Я не буду использовать конструктор копии "дефолтовый".
G>Как еще объяснить, я не знаю...
А зачем?
class A
{
private:
    int delta_;
    int    beta_;
    std::string    gamma_;
};

Пусть компьютер для него рисует оператор копирования и copy ctor, он железный, а мне за строчки не платят
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[2]: Как я завалил собеседование
От: LuciferMoscow Россия  
Дата: 22.01.07 19:01
Оценка:
Здравствуйте, Hottabych1, Вы писали:

H>Вообще, судя по количеству ответов тема довольна животрепещущая...

Неа, просто флейм и оффтоп поднялся. Одни copy ctor и operator= сколько постов собрали
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[2]: Как я завалил собеседование
От: Hottabych1  
Дата: 22.01.07 19:07
Оценка:
Здравствуйте, Kubyshev Andrey, Вы писали:

H>>Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования? Ведь достаточно потратить 30 сек времени, чтобы узнать, как это записывается. Ведь умение-неумение записать ту или иную конструкцию на языке программирования еще не говорит о том, что я не умею программировать, не умею решать задачи. Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?


KA>Такие люди как ты называются "велосипедисты". Почти везде у них необычные и нестандартдные решения стандартных задач. Лично я с такими не люблю работать. Если ты только окончил универ, то еще все впереди, а если ближе к 30, то ядреный велосипедист.

Я на 6м курсе, в июне заканчиваю.
Re[2]: Как я завалил собеседование
От: branco  
Дата: 22.01.07 20:02
Оценка: +1 -1 :)
Здравствуйте, Kubyshev Andrey, Вы писали:

H>>Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования? Ведь достаточно потратить 30 сек времени, чтобы узнать, как это записывается. Ведь умение-неумение записать ту или иную конструкцию на языке программирования еще не говорит о том, что я не умею программировать, не умею решать задачи. Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?


KA>Такие люди как ты называются "велосипедисты". Почти везде у них необычные и нестандартдные решения стандартных задач. Лично я с такими не люблю работать. Если ты только окончил универ, то еще все впереди, а если ближе к 30, то ядреный велосипедист.


А такие люди как ты называются "ходячие микросхемы". Стандартный набор состояний на входах — стандартный набор состояний на выходах.
Re[10]: Как я завалил собеседование
От: enzo  
Дата: 22.01.07 20:34
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

S>>> надо ещё сделать проверку на присваивание самому себе:

E>>Во-первых, эту проверку следует делать всегда, независимо от типа возвращаемого значения.
LM>Тут уже показывали фокус со swap. И никаких проверок не нужно

Согласен, проверка в этом случае необязательна. Однако вреда от нее немного, а эффективность в некоторых (пускай и довольно редких) случаях может возрасти.

У того же Саттера:

Note that copy assignment operators may well elect to check for self-assignment even if they don't have to—for example, they might do so for efficiency.

Re[11]: Как я завалил собеседование
От: LuciferMoscow Россия  
Дата: 22.01.07 20:38
Оценка: +1
Здравствуйте, enzo, Вы писали:

S>>>> надо ещё сделать проверку на присваивание самому себе:

E>>>Во-первых, эту проверку следует делать всегда, независимо от типа возвращаемого значения.
LM>>Тут уже показывали фокус со swap. И никаких проверок не нужно
E>Согласен, проверка в этом случае необязательна. Однако вреда от нее немного, а эффективность в некоторых (пускай и довольно редких) случаях может возрасти.
ИМХО экономия на спичках.
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[3]: Как я завалил собеседование
От: LuciferMoscow Россия  
Дата: 22.01.07 20:38
Оценка:
Здравствуйте, branco, Вы писали:

KA>>Такие люди как ты называются "велосипедисты". Почти везде у них необычные и нестандартдные решения стандартных задач. Лично я с такими не люблю работать. Если ты только окончил универ, то еще все впереди, а если ближе к 30, то ядреный велосипедист.

B>А такие люди как ты называются "ходячие микросхемы". Стандартный набор состояний на входах — стандартный набор состояний на выходах.
Хоть горшком назови, но если я приходу в фирму и мне говорят "мы используем буст", то это одно. А если я через пару месяцев нахожу в библиотеке класс Antocopyable, то это другое
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[17]: Как я завалил собеседование
От: i-maverick Россия  
Дата: 22.01.07 20:51
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>Извините, но "фокус со swap" позволят избежать дублирования кода(в copy ctor & operator=). Но не в Вашем случае


Фокус со swap позволяет не схватить исключение на полусозданном объекте и не потерять в памяти его члены.
Re[2]: Как я завалил собеседование
От: i-maverick Россия  
Дата: 22.01.07 20:53
Оценка:
Здравствуйте, Hottabych1, Вы писали:

H>Господа из Яндекса!

H>Если вы это читаете, то дайте мне еще один шанс. Обещаю, возьмете к себе — не пожалеете!

Ты думаешь, если ты не помнишь семантику конструктора копирования и в корне не представляешь, что такое std::map, то ты будешь иметь какой-то успех в яндексе?
Re[18]: Как я завалил собеседование
От: LuciferMoscow Россия  
Дата: 22.01.07 21:05
Оценка:
Здравствуйте, i-maverick, Вы писали:

LM>>Извините, но "фокус со swap" позволят избежать дублирования кода(в copy ctor & operator=). Но не в Вашем случае

IM>Фокус со swap позволяет не схватить исключение на полусозданном объекте и не потерять в памяти его члены.
На полускопированном, если быть точным. Но в целом согласен.
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[5]: Как я завалил собеседование
От: sraider http://dvinogradov.blogspot.com
Дата: 22.01.07 22:15
Оценка:
АК>Вероятно, они имели в виду, что применение const — это признак хорошего качественного кода, в который изначально заложен дополнительный контроль и предотвращение возможных багов. Потому что const, по большому счету, в принципе необязателен... но зачем-то его придумали

А придумали const в операторе= и конструкторе копирования чтобы можно было копировать константные объекты.

A a;
const A b;

// вот для этого:
a = b;
A c(b);
Re[3]: Как я завалил собеседование
От: skeptik_  
Дата: 22.01.07 22:54
Оценка:
Здравствуйте, AntZ, Вы писали:

AZ>Согласен, спрашивают коварные вопросы. Любого, даже очень опытного программера можно "подловить". я вот например очень удивился, когда 2-3 в резуьтате дало 4 миллиарда с копейками (один операнд был signed, другой unsigned)

33-битовый процессор? Тоже такой хочу!
Re[4]: Как я завалил собеседование
От: skeptik_  
Дата: 22.01.07 23:17
Оценка:
Здравствуйте, skeptik_, Вы писали:

_>33-битовый процессор? Тоже такой хочу!

Где-то мне минус померещился, а изменить сообщение нельзя
Re[2]: Как я завалил собеседование
От: Александр Каширин  
Дата: 22.01.07 23:20
Оценка:
Здравствуйте, fGordon, Вы писали:

G>ЗЫ: конечно, порой выводит из себя, что собеседуют по таким вещам, которые применяешь, но теорию по ним рассказать толком не можешь только на пальцах.. но сие похоже только моя проблема.


Кто ясно мыслит, тот ясно излагает! (копирайт не знаю чей )
Re[6]: Как я завалил собеседование
От: Александр Каширин  
Дата: 22.01.07 23:47
Оценка:
Здравствуйте, sraider, Вы писали:

АК>>Вероятно, они имели в виду, что применение const — это признак хорошего качественного кода, в который изначально заложен дополнительный контроль и предотвращение возможных багов. Потому что const, по большому счету, в принципе необязателен... но зачем-то его придумали


S>А придумали const в операторе= и конструкторе копирования чтобы можно было копировать константные объекты.


S>
S>A a;
S>const A b;

S>// вот для этого:
S>a = b;
S>A c(b);
S>


Хм... а разве неконстантный объект к константному не приводится автоматом при передаче в качестве параметра?
Re[5]: Как я завалил собеседование
От: Александр Каширин  
Дата: 22.01.07 23:50
Оценка: :)
Здравствуйте, LuciferMoscow, Вы писали:

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


G>>>> просто вот както в жизни <привык не доверять таким вот "по умолчанию" методам>. <привык описывать, если они нужны, "ручками">.

КД>>>Что-то я не понял зависимости между первым и вторым
G>>Что не понятного? Я опишу конструктор копии руками. Я не буду использовать конструктор копии "дефолтовый".
G>>Как еще объяснить, я не знаю...
LM>А зачем?
LM>
LM>class A
LM>{
LM>private:
LM>    int delta_;
LM>    int    beta_;
LM>    std::string    gamma_;
LM>};
LM>

LM>Пусть компьютер для него рисует оператор копирования и copy ctor, он железный, а мне за строчки не платят

Не понял... это шутка такая? Или серьезно? Если серьезно, то как по дефолту будет создана копия мембера gamma_, и как это отразится на надежности кода?
Re[3]: Как я завалил собеседование
От: Александр Каширин  
Дата: 22.01.07 23:59
Оценка:
Здравствуйте, branco, Вы писали:

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


H>>Господа из Яндекса!

H>>Если вы это читаете, то дайте мне еще один шанс. Обещаю, возьмете к себе — не пожалеете!

B>Можешь вот здесь http://www.isd.dp.ua/test.html.ru ещё потренироваться.


Интересно, у кого какие результаты Меня поблагодарили за участие
Re[5]: Как я завалил собеседование
От: jazzer Россия Skype: enerjazzer
Дата: 23.01.07 00:32
Оценка:
Здравствуйте, McSeem2, Вы писали:

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


J>>Конструктор копирования — это конструктор с одним параметром-ссылкой на тот же самый класс.

J>>Константная это ссылка или нет — не важно.

MS>Более того, передача по значению в конструкторе — это по сингнатуре тоже конструктор копирования! Просто так уж получилось в результате всех этих извилистых путей дизайна языка, что он приводит к бесконечной рекурсии. Типичный случай наступания себе на хвост.


Ты имеешь в виду move semantics?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[9]: Как я завалил собеседование
От: fGordon Земля  
Дата: 23.01.07 05:12
Оценка:
Здравствуйте, dr.Chaos, Вы писали:

DC>То что этот конструктор может быть вызывается неявно в некоторых случаях и если объект содержит указатель, то при удалении копии нас ждет сюрприз. Мало того, если я пользуюсь чужим кодом, то я предполагаю не нарвусь на растяжку.


так. снова в меня летят непонятные камни

в итоге, в коде может быть:
а) КК дефолтовый, в создании которого я не принимал участия
б) КК "рукописный", делающий помимо основной работы еще какую то (какие нибудь индексы проапдейтил или еще что).
в) КК дефолтовый и КК "рукописный".

так вот, что может ввести вас в ступор при любом из этих исходов?

DC>Т.е. либо есть возможность копировать и она работает, либо копировать нельзя. Промежуточные состояния приводят к трате чужих нервов(своих?), особенно если глюк не проявился в отладке, но релиз убил.


КК _так_и_так_ будет.
in c/c++ we trust!
Re[5]: Как я завалил собеседование
От: fGordon Земля  
Дата: 23.01.07 05:14
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>А зачем?

LM>
LM>class A
LM>{
LM>private:
LM>    int delta_;
LM>    int    beta_;
LM>    std::string    gamma_;
LM>};
LM>

LM>Пусть компьютер для него рисует оператор копирования и copy ctor, он железный, а мне за строчки не платят

бесспорно. но просто случаются такие моменты, когда нужен КК. и именно в такие моменты я описываю свой КК, а не надеюсь на работу дефолтового КК. и про такие моменты я и говорю.
in c/c++ we trust!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.