Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы на знание языка C/C++

Модерирует : ShIvADeSt

ShIvADeSt (15-04-2009 02:12): Вверху все написано  Версия для печати • ПодписатьсяДобавить в закладки

   

Labutin



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Хочу в данной теме собирать вопросы, касающиеся ТОЛЬКО самого языка программирования C/C++, а не алгоритмов программирования.
Т.е. это вопросы, которые можно задавать на собеседовании (или экзамене) по самому языку.
Приведу несколько примеров.
Вопрос номер 1.
int main()
{
        test *tmp1 = new test;
//        test tmp2;
        return 0;
}
Есть класс test. Если раскомментировать строку, то код не компилируется. В чем особенность класса test?
 
Вопрос номер 2.
Могут ли быть виртуальные методы приватными? Если да, то объяснить, что будет при наследовании и перегрузке такого метода. Если нет, то почему?
 
Постите ответы, а также свои вопросы.
 
P.S. Может быть я зря все это затеял и в инете есть сайт, где можно найти подобные вопросы?

Всего записей: 935 | Зарегистр. 31-07-2001 | Отправлено: 11:50 31-03-2005 | Исправлено: Labutin, 11:51 31-03-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Labutin
во-первых: похожая тема уже создавалась и благополучно заглохла
во-вторых вопросы примитивные и лучше почитать книги.
---
ответы напрашиваются сами - в первом вопросе закрытый деструктор (глупо и бесполезно)
во-втором ответ слишком сложен для поста и раскрывает некоторые недостатки объектной модели с++ (вероятное применение - закрытие для дальнейшего наследования, но работает это не совсем гладко)

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 12:29 31-03-2005
Labutin



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
WiseAlex

Цитата:
во-первых: похожая тема уже создавалась и благополучно заглохла

Замечательно, но я ее не нашел Видел несколько тем про алгоритмы. Но это не то. Не подскажешь, где нужная мне тема?

Цитата:
во-вторых вопросы примитивные и лучше почитать книги

Для кого как. Я встречал ОЧЕНЬ много программистов, которые имеют приличный опыт, но не знают ответы на эти вопросы, т.к. на практике с этим никогда не сталкивались. Я рад за тебя, что они показались тебе простыми.

Цитата:
ответы напрашиваются сами  

ответы верные
Могу подкинуть еще вопрос, зачем может понадобиться приватный конструктор? Сам такое встречал и делал - вполне полезно, особенно в C#

Всего записей: 935 | Зарегистр. 31-07-2001 | Отправлено: 12:41 31-03-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Labutin

Цитата:
зачем может понадобиться приватный конструктор?

никогда такого не делал, но думаю для того же, для чего делают закрытый конструктор, т.е. с закрытым конструктором нельзя создать класс напрямую, а с деструктором - удалить. Вероятное использование свой менеджер памяти или что-то в этом духе.
 
Добавлено:

Цитата:
Для кого как. Я встречал ОЧЕНЬ много программистов, которые имеют приличный опыт, но не знают ответы на эти вопросы

вот я и говорю - книги надо читать

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 12:47 31-03-2005
Labutin



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
WiseAlex

Цитата:
 т.е. с закрытым конструктором нельзя создать класс напрямую

Это разумеется верно Про свой менеджер памяти я твою идею не понял. Если не сложно - можешь развить мысль?
Мой вариант применения закрытого конструктора другой. Если никто не придумает - позже напишу.

Цитата:
вот я и говорю - книги надо читать

Книги - это хорошо, а правильный опыт в хорошей команде - еще лучше! Но я не видел книг, которые касаются таких тонкостей ООП и самого языка
Сам учил в свое время C/C++ и ООП по Подбельскому. Потом не видел ни одной более стоящей книги. Может быть мне просто не повезло
А что ты посоветуешь почитать про тонкости C/C++ и ООП?

Всего записей: 935 | Зарегистр. 31-07-2001 | Отправлено: 13:33 31-03-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Labutin

Цитата:
А что ты посоветуешь почитать про тонкости C/C++ и ООП?

вся линейка с++ in depth. глянь на http://anatolix.naumen.ru ну ли конкретно http://anatolix.naumen.ru/Books/CPlusPlus?v=fvi
Labutin

Цитата:
Про свой менеджер памяти я твою идею не понял

ну может я и перегнул - просто первое, что пришло в голову, но суть в том что бы запретить вызов delete с указателем на этот класс (а класс, например в оболочке типа smart_ptr).

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 13:46 31-03-2005 | Исправлено: WiseAlex, 13:49 31-03-2005
Duke Shadow



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Labutin

Цитата:
Могу подкинуть еще вопрос, зачем может понадобиться приватный конструктор?

Гарантированная невозможность создания объектов данного класса. Чаще всего используется потому, что абстрактный класс такой возможности не представляет.

Цитата:
Сам учил в свое время C/C++ и ООП по Подбельскому. Потом не видел ни одной более стоящей книги.

Подбельский - хороший автор для начинающих.
Странно, что ты не смог найти того же... Страуструпа! "Дизай и эволюция языка С++" хотя бы - там много интересного. Ну а уж ARM - это вообще must have, если ты решил серьёзно на С++ писать.
Ну а дальше... Рихтер, Руссинович, Шилдт - признанные гуру.
 
Добавлено:
Упс, прогнал. Рихтер - это по винде. По С++ - Джефф Элджер.

----------
Тот, кто умеет - делает, кто не умеет - учит(с)Б. Шоу
Войны никого не могут сделать великим(с)магистр Йода
Аватар(c)MindDiver

Всего записей: 3911 | Зарегистр. 15-02-2003 | Отправлено: 15:52 31-03-2005
Labutin



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Гарантированная невозможность создания объектов данного класса. Чаще всего используется потому, что абстрактный класс такой возможности не представляет

Это как? Класс на то абстрактный, чтобы нельзя было создавать объекты такого класса.

Всего записей: 935 | Зарегистр. 31-07-2001 | Отправлено: 11:55 02-04-2005
Duke Shadow



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Labutin
Точно не скажу. Но что-то именно в этом духе было. То ли как-то при наследовании можно было перегрузить функции и после этого получить экземпляр базового класса, то ли ещё что. Помню только, что описывался данный приём как гарантированый способ и что-то про абстрактные классы в этой же связи говорилось.
Давно за писанину прог и, соответственно, чтение ARM и прочих талмудов не брался. Пришлось в админы переквалифицироваться.

----------
Тот, кто умеет - делает, кто не умеет - учит(с)Б. Шоу
Войны никого не могут сделать великим(с)магистр Йода
Аватар(c)MindDiver

Всего записей: 3911 | Зарегистр. 15-02-2003 | Отправлено: 15:15 03-04-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
для поддержания темы:
интересная особенность друзей:
class foo{
public:
 friend void bar(){/*здесь внутренности*/}
}
void bar();
--
т.е. внутри класса можно не только объявлять friend функцию/оператор, но и определять

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 13:13 04-04-2005
redp

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WiseAlex
хе-хе
можно и еще круче:

Код:
struct parent { int i; };
struct shit: public parent
{
  int i2;
} * func(int i)
{
  shit *res = new shit;
  res->i = i;
  return res;
}
shit shit; // типа заюзаем определение типа, появившееся в описании return type ф-ции func
 

и работает типа на Visual C++, ага

Всего записей: 514 | Зарегистр. 16-06-2003 | Отправлено: 18:46 04-04-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
redp
ну здесь как раз таки нет ничего удивительного - это насление С. т.е.
struct{
...
} переменные этого типа;
т.е. ко времени объявления функции структура уже определена.

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 11:02 05-04-2005
MirexzPalich

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите пожалуйста!!!
С помощью каких функций, продерур в СИ и С++ можно выяснить в ходит ли данный компьютер в заданную сеть?

Всего записей: 8 | Зарегистр. 05-04-2009 | Отправлено: 16:38 14-04-2009 | Исправлено: MirexzPalich, 16:39 14-04-2009
   

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы на знание языка C/C++
ShIvADeSt (15-04-2009 02:12): Вверху все написано


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru