Собеседование: соискатель наносит ответный удар
От: slava_phirsov Россия  
Дата: 24.08.11 10:16
Оценка: +1 :))) :))) :))) :))) :))) :))) :))) :))) :))) :)
Самые смешных людей я встречал на собеседованиях

Интервьюер (И): Я вижу, что многого Вы не знаете и Вам еще много чему нужно учиться. Некоторые вещи, которые должен знать каждый, явно прошли мимо Вас.
Я (Я): Во-первых, я всю жизнь учусь, во-вторых, все знать невозможно, ну а в-третьих, у каждого свое понимание, что должен знать каждый, а что нет. Уверен, что и Вы не каждый вопрос ответите сходу.
(И) смотрит на меня с интересом.
(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?
(И): Почему нельзя? Можно!
(Я): Хорошо, язык это позволяет, но делать так не стоит. Почему?
(И)(задумчиво): Неоднозначности тут не возникнет... Вы не правы!
(Я): Хорошо, подумайте над этим. Вопрос на самом деле нуууу очень простой!
Вежливо прощаемся.

Через день звонит мне на трубку.
(И): Здравствуйте, С.А., это Вас беспокоят из фирмы XXX. Мы тут подумали...
Па-па-па-пам! Неужели берут?
(И): Нам кажется, Вы все-таки заблуждаетесь, и никаких препятствий для такой перегрузки нет! Объясните, почему Вы так считаете, что этого делать нельзя?
(Я) (еле сдерживаясь, чтобы не начать кататься от смеха по полу): А Вы меня берете, или нет?
(И): Нет, Вы нам не подходите!
(Я): Тогда подумайте над этим вопросом сами.
Кладу трубку.
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re: Собеседование: соискатель наносит ответный удар
От: Ytz https://github.com/mtrempoltsev
Дата: 24.08.11 10:35
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

_>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?


Ты случайно не перепутал char* со string?
Re[2]: Собеседование: соискатель наносит ответный удар
От: slava_phirsov Россия  
Дата: 24.08.11 10:37
Оценка:
Здравствуйте, Ytz, Вы писали:

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


_>>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?


Ytz>Ты случайно не перепутал char* со string?


Ответ отрицательный (C) Terminator
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re[3]: Собеседование: соискатель наносит ответный удар
От: Ytz https://github.com/mtrempoltsev
Дата: 24.08.11 10:38
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

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


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


_>>>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?


Ytz>>Ты случайно не перепутал char* со string?


_>Ответ отрицательный (C) Terminator


Ну тогда если никто еще не перегрузит с char*, то проблем быть не должно Я не прав?
Re: Собеседование: соискатель наносит ответный удар
От: 0x7be СССР  
Дата: 24.08.11 10:39
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

_>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?

А правда, почему?
Re[4]: Собеседование: соискатель наносит ответный удар
От: placement_new  
Дата: 24.08.11 10:39
Оценка:
Здравствуйте, Ytz, Вы писали:

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


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


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


_>>>>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?


Ytz>>>Ты случайно не перепутал char* со string?


_>>Ответ отрицательный (C) Terminator


Ytz>Ну тогда если никто еще не перегрузит с char*, то проблем быть не должно Я не прав?


А если вызвать с метод "bla-bla" ?
Re[5]: Собеседование: соискатель наносит ответный удар
От: Ytz https://github.com/mtrempoltsev
Дата: 24.08.11 10:42
Оценка:
Здравствуйте, placement_new, Вы писали:

Ytz>>Ну тогда если никто еще не перегрузит с char*, то проблем быть не должно Я не прав?


_>А если вызвать с метод "bla-bla" ?


Будет неявное приведение к string
Re[4]: Собеседование: соискатель наносит ответный удар
От: slava_phirsov Россия  
Дата: 24.08.11 10:42
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>Ну тогда если никто еще не перегрузит с char*, то проблем быть не должно Я не прав?


Нет, не прав. Случай действительно из реальной жизни. Все дело в том, что... Стоп, а не Вы ли это, уважаемый (И)? Эээээ нет, милостивый государь, думайте сами. Или шлите мне офер, почта и телефон в резюме, надеюсь, Вы его еще не выкинули
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re[5]: Собеседование: соискатель наносит ответный удар
От: slava_phirsov Россия  
Дата: 24.08.11 10:44
Оценка:
Здравствуйте, placement_new, Вы писали:

_>А если вызвать с метод "bla-bla" ?


Tango down. Вопрос действительно простенький, как и было сказано. Но, видите, и в самом деле, очевидное не каждому бросается в глаза.
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re[5]: Собеседование: соискатель наносит ответный удар
От: Ytz https://github.com/mtrempoltsev
Дата: 24.08.11 10:45
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

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


Ytz>>Ну тогда если никто еще не перегрузит с char*, то проблем быть не должно Я не прав?


_>Нет, не прав. Случай действительно из реальной жизни. Все дело в том, что... Стоп, а не Вы ли это, уважаемый (И)?


Моя фотография и имя с фамилией в профиле, можете сами решить тот я человек или нет.
Re[6]: Собеседование: соискатель наносит ответный удар
От: Ytz https://github.com/mtrempoltsev
Дата: 24.08.11 10:46
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

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


_>>А если вызвать с метод "bla-bla" ?


_>Tango down. Вопрос действительно простенький, как и было сказано. Но, видите, и в самом деле, очевидное не каждому бросается в глаза.


И что? Если не перегружен char*, то просто будет приведение к string. Вполне ожидаемое поведение
Re[6]: Собеседование: соискатель наносит ответный удар
От: slava_phirsov Россия  
Дата: 24.08.11 10:48
Оценка:
Здравствуйте, Ytz, Вы писали:


_>>Стоп, а не Вы ли это, уважаемый (И)?


Ytz>Моя фотография и имя с фамилией в профиле, можете сами решить тот я человек или нет.


Я пошутил. Надеюсь, Вы не восприняли эту подковырку, как оскорбление
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re[7]: Собеседование: соискатель наносит ответный удар
От: placement_new  
Дата: 24.08.11 10:50
Оценка: 1 (1) +1
Здравствуйте, Ytz, Вы писали:

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


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


_>>>А если вызвать с метод "bla-bla" ?


_>>Tango down. Вопрос действительно простенький, как и было сказано. Но, видите, и в самом деле, очевидное не каждому бросается в глаза.


Ytz>И что? Если не перегружен char*, то просто будет приведение к string. Вполне ожидаемое поведение


В том то и проблема, что приведение будет к bool.
Re[7]: Собеседование: соискатель наносит ответный удар
От: slava_phirsov Россия  
Дата: 24.08.11 10:52
Оценка: 1 (1)
Здравствуйте, Ytz, Вы писали:

Ytz>И что? Если не перегружен char*, то просто будет приведение к string. Вполне ожидаемое поведение


НЕТ! http://codepad.org/MGOluYsu Попробуйте сами. Приведение из const char* к bool "старше мастью", чем приведение из const char* к string
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re[8]: Собеседование: соискатель наносит ответный удар
От: Ytz https://github.com/mtrempoltsev
Дата: 24.08.11 10:52
Оценка:
Здравствуйте, placement_new, Вы писали:

Ytz>>И что? Если не перегружен char*, то просто будет приведение к string. Вполне ожидаемое поведение


_>В том то и проблема, что приведение будет к bool.


Да, не подумал.
Re: Собеседование: соискатель наносит ответный удар
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 24.08.11 10:55
Оценка: -1
Здравствуйте, slava_phirsov, Вы писали:

_>Самые смешных людей я встречал на собеседованиях


_>Интервьюер (И): Я вижу, что многого Вы не знаете и Вам еще много чему нужно учиться. Некоторые вещи, которые должен знать каждый, явно прошли мимо Вас.

_>Я (Я): Во-первых, я всю жизнь учусь, во-вторых, все знать невозможно, ну а в-третьих, у каждого свое понимание, что должен знать каждый, а что нет. Уверен, что и Вы не каждый вопрос ответите сходу.
_>(И) смотрит на меня с интересом.
_>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?
_>(И): Почему нельзя? Можно!
_>(Я): Хорошо, язык это позволяет, но делать так не стоит. Почему?
_>(И)(задумчиво): Неоднозначности тут не возникнет... Вы не правы!
_>(Я): Хорошо, подумайте над этим. Вопрос на самом деле нуууу очень простой!
_>Вежливо прощаемся.

_>Через день звонит мне на трубку.

_>(И): Здравствуйте, С.А., это Вас беспокоят из фирмы XXX. Мы тут подумали...
_>Па-па-па-пам! Неужели берут?
_>(И): Нам кажется, Вы все-таки заблуждаетесь, и никаких препятствий для такой перегрузки нет! Объясните, почему Вы так считаете, что этого делать нельзя?
_>(Я) (еле сдерживаясь, чтобы не начать кататься от смеха по полу): А Вы меня берете, или нет?
_>(И): Нет, Вы нам не подходите!
_>(Я): Тогда подумайте над этим вопросом сами.
_>Кладу трубку.

Блин. Один "каверзный" вопрос придумал и "радости полные штаны"®

Я такие сотнями генерю и не жужжу
Мой новый проект "ВЕПРЬ-1"
Re[2]: Собеседование: соискатель наносит ответный удар
От: ilnar Россия  
Дата: 24.08.11 10:56
Оценка: 4 (1)
Здравствуйте, 0x7be, Вы писали:

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


_>>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?

0>А правда, почему?

перегрузите оба и посмотрите, какой вызовется на const char *

void bar(const std::string &s) { printf("const std::string &\n"); }
void bar(bool b) { printf("bool"); }
...
bar("");
Re: Собеседование: соискатель наносит ответный удар
От: Kolobrodin Россия  
Дата: 24.08.11 10:56
Оценка: :)
Здравствуйте, slava_phirsov, Вы писали:

Вот тут обсуждалось ))
http://rsdn.ru/forum/cpp/4225895.flat.aspx#4225895
Автор: Ytz
Дата: 08.04.11
Неоконченная мысль всегда казалась Шри Япутре слишком
Re[2]: Собеседование: соискатель наносит ответный удар
От: _Obelisk_ Россия http://www.ibm.com
Дата: 24.08.11 11:00
Оценка: +5
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Я такие сотнями генерю и не жужжу


Кто бы говорил ?! Ваше жу-жу на весь рунет разносится. Да и не генерите вы вопросы, а тырите из форумов.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[3]: Собеседование: соискатель наносит ответный удар
От: Evgeniy Skvortsov Россия  
Дата: 25.08.11 06:59
Оценка:
Здравствуйте, ilnar, Вы писали:

I>перегрузите оба и посмотрите, какой вызовется на const char *


I>
I>void bar(const std::string &s) { printf("const std::string &\n"); }
I>void bar(bool b) { printf("bool"); }
I>...
I>bar("");
I>


а можно пояснить почему не вызывается вариант с std::string ?
Re[2]: Собеседование: соискатель наносит ответный удар
От: alzt  
Дата: 25.08.11 07:05
Оценка: 6 (1)
Здравствуйте, Ytz, Вы писали:

_>>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?


Ytz>Ты случайно не перепутал char* со string?


char*, string и bool вместе как раз можно перегружать, а часто даже нужно. Причём возможны любые комбинации char*\string, char*\bool кроме string\bool.
Re[4]: Собеседование: соискатель наносит ответный удар
От: alzt  
Дата: 25.08.11 07:09
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:

ES>а можно пояснить почему не вызывается вариант с std::string ?


Извиняюсь за неточный ответ. Лень гуглить. Но фишка в том, что "" имеет тип char* (const-ы я опустил), т.е. указатель. Указатель это фактически число, которое легко преобразуется в int, а bool — это фактически и есть int, причём это встроенный тип.
А string — это как бы пользовательский класс, причём шаблон. Понятно, что компилятор предпочтёт преобразовать константу во встроенный тип, чем не понятно во что.

Вообще — серьёзная дыра. Хотели строки сделать пользовательскими типами и получилось то, что получилось.
Re[2]: Собеседование: соискатель наносит ответный удар
От: Handie  
Дата: 25.08.11 07:23
Оценка: +4
_>>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?
0>А правда, почему?

функции
void makeSomething(bool par);
void makeSomething(const std::string &par);
Являются примерами довольно неудачного проектирования.

Параметр типа bool хорошо подходит для "примитивных" сеттеров
void setEnabled(bool par);
void setVisible(bool par);

Для сложных вызовов типа (реальный пример из Win32, кстати)
CreateEvent(NULL, TRUE, FALSE, NULL);
Попробуйте сказать по памяти что означает второй и третий параметр.

А как бы было хорошо написать
CreateEvent(NULL, AUTO_RESET_ENABLED, CREATE_SIGNALED, NULL);

В современных API bool имеют тенденцию заменяться на enum:
str.replace("%USER%", user, false); // Qt 3
str.replace("%USER%", user, Qt::CaseInsensitive); // Qt 4
Второй вариант куда читабельней

Проектировать API по человечески надо, тогда таких граблей не будет
Re[7]: Собеседование: соискатель наносит ответный удар
От: MasterZiv СССР  
Дата: 25.08.11 07:42
Оценка:
On 24.08.2011 14:46, Ytz wrote:

> И что? Если не перегружен char*, то просто будет приведение к string. Вполне

> ожидаемое поведение

Ага, или к bool. И угадай, куда оно пойдёт.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Собеседование: соискатель наносит ответный удар
От: 0x7be СССР  
Дата: 25.08.11 07:47
Оценка:
Здравствуйте, alzt, Вы писали:

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

A>Вообще — серьёзная дыра. Хотели строки сделать пользовательскими типами и получилось то, что получилось.
Имхо дыра в том, что при наличии неопределённости компилятор принимает решение.
Re[4]: Собеседование: соискатель наносит ответный удар
От: MasterZiv СССР  
Дата: 25.08.11 08:00
Оценка:
On 25.08.2011 10:59, Evgeniy Skvortsov wrote:

> а можно пояснить почему не вызывается вариант с std::string ?


Более высокий приоритет имеет преобразование к встроенному типу bool,
чем к std::string, который класс с конструктором.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Собеседование: соискатель наносит ответный удар
От: MasterZiv СССР  
Дата: 25.08.11 08:01
Оценка: +1
On 25.08.2011 11:47, 0x7be wrote:

> Имхо дыра в том, что при наличии неопределённости компилятор принимает решение.


Там нет ни дыры, ни неопределённости.
Есть только неинтуитивность.
Posted via RSDN NNTP Server 2.1 beta
Re[8]: Собеседование: соискатель наносит ответный удар
От: sysenter  
Дата: 25.08.11 08:03
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Ага, или к bool. И угадай, куда оно пойдёт.


Так точно, ещё в Страуструпе кажется написано, что приоритет при приведении отдаётся встроенным типам вместо пользовательских.
Re[5]: Собеседование: соискатель наносит ответный удар
От: Evgeniy Skvortsov Россия  
Дата: 25.08.11 08:21
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 25.08.2011 10:59, Evgeniy Skvortsov wrote:


>> а можно пояснить почему не вызывается вариант с std::string ?


MZ>Более высокий приоритет имеет преобразование к встроенному типу bool,

MZ>чем к std::string, который класс с конструктором.

Спасибо всем ответившим.
Еще есть один вопрос, для чего в примере используется константная ссылка ?
Я пробовал разные варианта — без константы, без ссылки и всякие сочетания — результат один — преобразовывается к bool.
Re[6]: Собеседование: соискатель наносит ответный удар
От: sysenter  
Дата: 25.08.11 08:43
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:


ES>Еще есть один вопрос, для чего в примере используется константная ссылка ?

ES>Я пробовал разные варианта — без константы, без ссылки и всякие сочетания — результат один — преобразовывается к bool.

Константная ссылка чтобы можно было создать ссылку на временный объект.
Re[6]: Собеседование: соискатель наносит ответный удар
От: MasterZiv СССР  
Дата: 25.08.11 09:08
Оценка:
On 25.08.2011 12:21, Evgeniy Skvortsov wrote:

> Еще есть один вопрос, для чего в примере используется константная ссылка ?

> Я пробовал разные варианта — без константы, без ссылки и всякие сочетания —
> результат один — преобразовывается к bool.

К неконстантной ссылке на string по стандарту нельзя преобразовать строковый
литерал, потому что инициализация неконстантной ссылки ссылкой на временный
объект запрещена. Но не все компиляторы эту заповедь соблюдают.
Posted via RSDN NNTP Server 2.1 beta
Re: Собеседование: соискатель наносит ответный удар
От: TimurSPB Интернет  
Дата: 25.08.11 09:14
Оценка:
Никогда бы не стал делать такую перегрузку. Да и в отладчике ловиться такой глюк очень легко.
Make flame.politics Great Again!
Re[6]: Собеседование: соискатель наносит ответный удар
От: alzt  
Дата: 25.08.11 09:25
Оценка:
Здравствуйте, 0x7be, Вы писали:

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

A>>Вообще — серьёзная дыра. Хотели строки сделать пользовательскими типами и получилось то, что получилось.
0>Имхо дыра в том, что при наличии неопределённости компилятор принимает решение.

Тут нет неопределённости. Всё очень чётко расписано в стандарте. Просто всё это очень неинтуитивно и очень многие на это напарываются. Либо по незнанию, либо по недосмотру.
Re[6]: Собеседование: соискатель наносит ответный удар
От: alzt  
Дата: 25.08.11 09:31
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:

ES>Спасибо всем ответившим.

ES>Еще есть один вопрос, для чего в примере используется константная ссылка ?
ES>Я пробовал разные варианта — без константы, без ссылки и всякие сочетания — результат один — преобразовывается к bool.

Добавлю к 2м ответившим. Что как минимум константная ссылка это правило хорошего тона. Если функция не изменяет параметр, то надо либо передавать по значению, либо как константную ссылку.
Если же функция изменяет параметр, то стоит использовать неконстантную ссылку (или указатель), но в данном случае это маловероятно, т.к. метод с таким же названием принимает bool.
Re[3]: Собеседование: соискатель наносит ответный удар
От: alzt  
Дата: 25.08.11 09:35
Оценка:
Здравствуйте, Handie, Вы писали:

_>>>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?

0>>А правда, почему?

H>Проектировать API по человечески надо, тогда таких граблей не будет


Возможно требуется переопределить operator<<. Там, конечно тоже enum-ы не помешают, но что делать, если уже есть API с bool-ами. Особенно часто возникает при интеграции с чем-либо.
Re: Собеседование: соискатель наносит ответный удар
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 25.08.11 11:54
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

_>Самые смешных людей я встречал на собеседованиях


_>Интервьюер (И): Я вижу, что многого Вы не знаете и Вам еще много чему нужно учиться. Некоторые вещи, которые должен знать каждый, явно прошли мимо Вас.

_>Я (Я): Во-первых, я всю жизнь учусь, во-вторых, все знать невозможно, ну а в-третьих, у каждого свое понимание, что должен знать каждый, а что нет. Уверен, что и Вы не каждый вопрос ответите сходу.
_>(И) смотрит на меня с интересом.
_>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?
_>(И): Почему нельзя? Можно!
_>(Я): Хорошо, язык это позволяет, но делать так не стоит. Почему?
_>(И)(задумчиво): Неоднозначности тут не возникнет... Вы не правы!
_>(Я): Хорошо, подумайте над этим. Вопрос на самом деле нуууу очень простой!
_>Вежливо прощаемся.

_>Через день звонит мне на трубку.

_>(И): Здравствуйте, С.А., это Вас беспокоят из фирмы XXX. Мы тут подумали...
_>Па-па-па-пам! Неужели берут?
_>(И): Нам кажется, Вы все-таки заблуждаетесь, и никаких препятствий для такой перегрузки нет! Объясните, почему Вы так считаете, что этого делать нельзя?
_>(Я) (еле сдерживаясь, чтобы не начать кататься от смеха по полу): А Вы меня берете, или нет?
_>(И): Нет, Вы нам не подходите!
_>(Я): Тогда подумайте над этим вопросом сами.
_>Кладу трубку.

Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.
"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
в классе-потомке вызвать приватный метод класса-предка?"

99,99% Вам ответят, что "нет", а правильный ответ — "да"
Мой новый проект "ВЕПРЬ-1"
Re[2]: Собеседование: соискатель наносит ответный удар
От: ishare  
Дата: 25.08.11 11:55
Оценка: 4 (1)
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.

ДТ>"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
ДТ>в классе-потомке вызвать приватный метод класса-предка?"

ДТ>99,99% Вам ответят, что "нет", а правильный ответ — "да"

Правильный ответ — "а зачем ?", т.к. метод и делается приватным с целью скрыть его от потомков
Re[3]: Собеседование: соискатель наносит ответный удар
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 25.08.11 12:26
Оценка:
Здравствуйте, ishare, Вы писали:

I>Здравствуйте, Доктор ТуамОсес, Вы писали:


ДТ>>Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.

ДТ>>"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
ДТ>>в классе-потомке вызвать приватный метод класса-предка?"

ДТ>>99,99% Вам ответят, что "нет", а правильный ответ — "да"

I>Правильный ответ — "а зачем ?", т.к. метод и делается приватным с целью скрыть его от потомков

"Зачем?" говорите?
А чтобы показать человеку, который проводит с Вами собеседование, какой он ламер.
Ведь с этой же целью топикстартер задавал свой вопрос?
Мой новый проект "ВЕПРЬ-1"
Re[2]: Собеседование: соискатель наносит ответный удар
От: sysenter  
Дата: 25.08.11 12:38
Оценка:
ДТ>Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.
ДТ>"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
ДТ>в классе-потомке вызвать приватный метод класса-предка?"

ДТ>99,99% Вам ответят, что "нет", а правильный ответ — "да"

И как его вызвать?
Re[3]: Собеседование: соискатель наносит ответный удар
От: c_plus_plus_newbie  
Дата: 25.08.11 13:22
Оценка:
Здравствуйте, sysenter, Вы писали:

ДТ>>Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.

ДТ>>"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
ДТ>>в классе-потомке вызвать приватный метод класса-предка?"

ДТ>>99,99% Вам ответят, что "нет", а правильный ответ — "да"

S>И как его вызвать?


Видимо, имеется в виду спецификатор friend в базовом классе для класса наследника
Re[3]: Собеседование: соискатель наносит ответный удар
От: quwy  
Дата: 25.08.11 13:23
Оценка:
Здравствуйте, sysenter, Вы писали:

ДТ>>Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.

ДТ>>"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
ДТ>>в классе-потомке вызвать приватный метод класса-предка?"

ДТ>>99,99% Вам ответят, что "нет", а правильный ответ — "да"
S>И как его вызвать?
Наверное при помощи предварительного #define private public или аналогичным методом в комстроке компилятора.
Re[2]: Собеседование: соискатель наносит ответный удар
От: const_volatile  
Дата: 25.08.11 13:28
Оценка:
Здравствуйте, Kolobrodin, Вы писали:

K>Вот тут обсуждалось ))

K>http://rsdn.ru/forum/cpp/4225895.flat.aspx#4225895
Автор: Ytz
Дата: 08.04.11


обратите внимание на автора того поста. спустя 4 месяца Ytz благополучно наступает на те же грабли
Re[3]: Собеседование: соискатель наносит ответный удар
От: Ytz https://github.com/mtrempoltsev
Дата: 25.08.11 13:57
Оценка: :)))
Здравствуйте, const_volatile, Вы писали:

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


K>>Вот тут обсуждалось ))

K>>http://rsdn.ru/forum/cpp/4225895.flat.aspx#4225895
Автор: Ytz
Дата: 08.04.11


_>обратите внимание на автора того поста. спустя 4 месяца Ytz благополучно наступает на те же грабли


Некоторые ничему не учатся
Re[3]: Собеседование: соискатель наносит ответный удар
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 25.08.11 13:58
Оценка:
Здравствуйте, sysenter, Вы писали:

ДТ>>Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.

ДТ>>"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
ДТ>>в классе-потомке вызвать приватный метод класса-предка?"

ДТ>>99,99% Вам ответят, что "нет", а правильный ответ — "да"

S>И как его вызвать? Читайте мой бильд или платите бапки.

{Топикстартер ведь тоже так и не ответил своему интервьюеру)
Мой новый проект "ВЕПРЬ-1"
Re[4]: Собеседование: соискатель наносит ответный удар
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 25.08.11 14:00
Оценка:
Здравствуйте, quwy, Вы писали:

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


ДТ>>>Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.

ДТ>>>"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
ДТ>>>в классе-потомке вызвать приватный метод класса-предка?"

ДТ>>>99,99% Вам ответят, что "нет", а правильный ответ — "да"
S>>И как его вызвать?
Q>Наверное при помощи предварительного #define private public или аналогичным методом в комстроке компилятора.

Я же сказал без грязных хаков
Мой новый проект "ВЕПРЬ-1"
Re[2]: Собеседование: соискатель наносит ответный удар
От: slava_phirsov Россия  
Дата: 25.08.11 14:58
Оценка: 2 (1)
Здравствуйте, TimurSPB, Вы писали:

TSP>Никогда бы не стал делать такую перегрузку. Да и в отладчике ловиться такой глюк очень легко.


Пример был взят из реальной жизни. Реального кода, созданного реальным программистом (между прочим, с профильным образованием, N-летним опытом, и прочими — хотел сказать "понтами", но не скажу, потому как мне этот человек ничего плохого не сделал). На самом деле, у функции были еще аргументы, и использовался, ЕМНИП, не std::string, а QString, и ситуация была сложнее описанной: была константа типа QString, потом ее заменили на const char*, уж не помню, из каких соображений, проблемы с макросом tr() , как-то так. И после этой эпической замены рвануло совершенно в неожиданном месте. "Эффект бабочки", однако. А отловилось — совершенно верно, при помощи gdb прошелся по стеку вызовов.
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re: Собеседование: соискатель наносит ответный удар
От: Паблик Морозов  
Дата: 25.08.11 15:43
Оценка: 2 (2) +1
А мне вот что интересно — почему любое собеседование по С/С++ непременно сводится к граблям? У меня, как у стороннего наблюдателя, складывается впечатление, что кроме граблей в нём, собственно, ничего и нет.
Re[5]: Собеседование: соискатель наносит ответный удар
От: carpenter Голландия  
Дата: 25.08.11 16:08
Оценка:
Здравствуйте, placement_new, Вы писали:


_>А если вызвать с метод "bla-bla" ?


я долго вкуривал что это за метод "bla-bla"
Весь мир — Кремль, а люди в нем — агенты
Re[2]: Собеседование: соискатель наносит ответный удар
От: alzt  
Дата: 25.08.11 19:23
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>А мне вот что интересно — почему любое собеседование по С/С++ непременно сводится к граблям? У меня, как у стороннего наблюдателя, складывается впечатление, что кроме граблей в нём, собственно, ничего и нет.


Их там слишком много. Соответственно, чем больше опыта, тем больше граблей человек знает.
Re[3]: Собеседование: соискатель наносит ответный удар
От: Kolobrodin Россия  
Дата: 25.08.11 19:53
Оценка: +2
Здравствуйте, alzt, Вы писали:

A>Здравствуйте, Паблик Морозов, Вы писали:


ПМ>>А мне вот что интересно — почему любое собеседование по С/С++ непременно сводится к граблям? У меня, как у стороннего наблюдателя, складывается впечатление, что кроме граблей в нём, собственно, ничего и нет.


A>Их там слишком много. Соответственно, чем больше опыта, тем больше граблей человек знает.


Или уже начинает забывать, почему применяет какую-либо практику. Просто забыл уже про ту конкретную граблю... а вот практика уже в подкорке...
Неоконченная мысль всегда казалась Шри Япутре слишком
Re[5]: Собеседование: соискатель наносит ответный удар
От: quwy  
Дата: 26.08.11 12:26
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

Q>>Наверное при помощи предварительного #define private public или аналогичным методом в комстроке компилятора.

ДТ>Я же сказал без грязных хаков
Грязный хак -- это таблицу виртуальных методов парсить, а это вполне себе чистый хак, ИМХО.
Re: Собеседование: соискатель наносит ответный удар
От: minorlogic Украина  
Дата: 27.08.11 11:20
Оценка: -1
Здравствуйте, slava_phirsov, Вы писали:

_>(Я): Вот например, простенький пример из жизни: почему в C++ нельзя перегружать функцию по const string& и bool?

_>(И): Почему нельзя? Можно!

Вы ошиблись,

_>(Я): Хорошо, язык это позволяет, но делать так не стоит. Почему?


Признаете что ошиблись.

_>(И)(задумчиво): Неоднозначности тут не возникнет... Вы не правы!


+1

_>(Я): Хорошо, подумайте над этим. Вопрос на самом деле нуууу очень простой!

_>Вежливо прощаемся.

Я вот тоже смотрю на вопрос и тупо не понимаю отчего у вас в голове могло сформироваться такое мнение.

Пример с вызовом функции с char* это нелепость какая то. Т.е. с какого перепугу програмист вызывая func("hello") будет ожидать преобразования типа в string?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Собеседование: соискатель наносит ответный удар
От: SE Украина  
Дата: 27.08.11 15:51
Оценка: +4 :))
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>А мне вот что интересно — почему любое собеседование по С/С++ непременно сводится к граблям? У меня, как у стороннего наблюдателя, складывается впечатление, что кроме граблей в нём, собственно, ничего и нет.


Более того, изначальная история в вольном изложении для непосвященного человека вроде меня выглядит так:

Топиккастер обнаружил грабли на одной из улиц, после чего пометил всю улицу как запретную, а затем начал спрашивать у интервьюера, почему нельзя ходить по той улице. Ну там же грабли лежат, правильно?

Re[4]: Собеседование: соискатель наносит ответный удар
От: uncommon Ниоткуда  
Дата: 28.08.11 15:54
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Здравствуйте, sysenter, Вы писали:


ДТ>>>Подкину Вас ещё вопросик в Вашу коллекцию для хождения на собеседования.

ДТ>>>"Можно ли без всяких "грязных хаков", чисто используя стандартные средства C++,
ДТ>>>в классе-потомке вызвать приватный метод класса-предка?"

ДТ>>>99,99% Вам ответят, что "нет", а правильный ответ — "да"

S>>И как его вызвать?

ДТ>Читайте мой бильд или платите бапки.
ДТ>{Топикстартер ведь тоже так и не ответил своему интервьюеру)

На самом деле Дохтур ГуамОсек тоже не знает ответа. Он просто где-то сPIздил этот вопрос. В полне возможно, что у такого же "эксперта" как и он сам.
Re: Собеседование: соискатель наносит ответный удар
От: Synapse  
Дата: 30.08.11 01:09
Оценка:
Здравствуйте, slava_phirsov, Вы писали:
_>Кладу трубку.
Меня после чем-то похожей истории на работу взяли. Будущий начальник спрашивал что-то про сиквел и настаивал на неправильном ответе. С собеседования послал. Ну я домой пришел, еще раз проверил свой ответ, и написал письмо ему. Через 20 минут звонок "когда сможешь выйти на работу?". Чел в итоге дельный оказался, просто временно затупил.
Re[5]: Собеседование: соискатель наносит ответный удар
От: TarasKo Голландия  
Дата: 30.09.11 03:01
Оценка:
Ну если базовый тип содержать виртуальные функции, то наверно можно как то расковырять таблицу хотя не знаю, в ней ведь будут только виртуальные функции. Я так понимаю это не переносимо и уж точно не может считаться честным способом.

Можно ещё собственное определение класса написать, в котором зафрендить какой-нибудь свой другой класс желающий доступаться до приватных членов. И включать его вместо вместо оригинального определения. Только это нарушает ODR и тоже не может считаться честным способом.

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

// X.h
class X {
   void f_priv() {...}
public:
   template <typename T> f_publ(conts T&) { ... }
};

// Y.h

namespace {
   struct shit {};
}

template<>
void X::f(const shit&) {
   f_priv(); // Зовём чё хотим, меняем любые приватные члены.
}

Этот способ уже честный на 100% но требует наличия шаблоного метода.

Интересно услышать правильный ответ и оценить его чистоту
Re[2]: Собеседование: соискатель наносит ответный удар
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 30.09.11 03:27
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>А мне вот что интересно — почему любое собеседование по С/С++ непременно сводится к граблям? У меня, как у стороннего наблюдателя, складывается впечатление, что кроме граблей в нём, собственно, ничего и нет.


это наиболее простой способ выяснить реальный опыт человека в С/С++. Если опыт есть, то человек на большинство грабель так или иначе наступал.
Re[3]: Собеседование: соискатель наносит ответный удар
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 30.09.11 07:49
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, Паблик Морозов, Вы писали:


ПМ>>А мне вот что интересно — почему любое собеседование по С/С++ непременно сводится к граблям? У меня, как у стороннего наблюдателя, складывается впечатление, что кроме граблей в нём, собственно, ничего и нет.


OE>это наиболее простой способ выяснить реальный опыт человека в С/С++. Если опыт есть, то человек на большинство грабель так или иначе наступал.

Или накануне собеседования прочитал про них в книжке
Мой новый проект "ВЕПРЬ-1"
Re[4]: Собеседование: соискатель наносит ответный удар
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 30.09.11 08:03
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ПМ>>>А мне вот что интересно — почему любое собеседование по С/С++ непременно сводится к граблям? У меня, как у стороннего наблюдателя, складывается впечатление, что кроме граблей в нём, собственно, ничего и нет.

OE>>это наиболее простой способ выяснить реальный опыт человека в С/С++. Если опыт есть, то человек на большинство грабель так или иначе наступал.
ДТ>Или накануне собеседования прочитал про них в книжке

если бы все было так просто — прочитал в книжке и больше на эти грабли не наступаешь....
Re[5]: Собеседование: соискатель наносит ответный удар
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 30.09.11 08:32
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, Доктор ТуамОсес, Вы писали:


ПМ>>>>А мне вот что интересно — почему любое собеседование по С/С++ непременно сводится к граблям? У меня, как у стороннего наблюдателя, складывается впечатление, что кроме граблей в нём, собственно, ничего и нет.

OE>>>это наиболее простой способ выяснить реальный опыт человека в С/С++. Если опыт есть, то человек на большинство грабель так или иначе наступал.
ДТ>>Или накануне собеседования прочитал про них в книжке

OE>если бы все было так просто — прочитал в книжке и больше на эти грабли не наступаешь....


"А кому сейчас легко?"©
Мой новый проект "ВЕПРЬ-1"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.