Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

14 вопросов по С++

9.0K
14 января 2007 года
EuGenius
48 / / 12.01.2007
:)
1.Что представляют из себя виртуальные функции? Как их реализовать на С?
2.Что из себя представляет бинарный поиск?
3.Что означает O(nlogn)?
4.Что такое рефакторинг?
5.Что из себя представляют паттерны проектирования?
6.Что такое автоматический указатель?
7.Что такое безымянная конструкция?
8.Понятие Exception Safety.
9.Что случится, если выделить память используя “new”, и освободить ее, используя “free”?:eek:
10.Есть что-то, что можно сделать в Си, но нельзя сделать в С++?
11.Что такое повисший указатель (dangling pointer)?
12.Что такое инвариант?
13.Что понимают под раскруткой стека?
14.Какие бывают виды памяти?
309
14 января 2007 года
el scorpio
1.1K / / 19.09.2006
1. "Виртуальная" функция, это указатель на массив адресов функций, из которых выбирается максимально доступная для данного объекта. Например, есть объект класса B, производного от A, в обоих есть метод, объявленный виртуальным. Есть указатель базового типа на данный объект. Тогда при вызове pA->General() будет вызван метод из класса A, а для pA->Virtual() - из класса B. Это и есть "виртуализация".
А создать просто - написав в h файле перед определением метода слово virtual.

6. Указатель, который автоматически удаляет из памяти указываемый объект.
 
Код:
{
sPointer <TStringList> pList = new TStringList(); // Создали
// Используем
return pList->Text; // Выход из функции
} //Конец блока кода, объект удалится сам


7. Структура, тип которой не имеет имени.
 
Код:
struct {int x, int y} Pointer;


9. Не будет произведён автоматический вызов деструктора - не будут удалены другие объекты, созданные данным.
Зависит от реализации компилятора, предоставляемых им отладочных средств и средств контроля целостности памяти. CodeGuard, прилагаемый к Builder'у останавливает программу и громко матерится, про другие среды разработки не знаю.

11. Возможно, который указывает на освобождённую область памяти.
 
Код:
TA *pA1 = new TA();
TA pA2 = pA1;
delete pA1;
// pA2  повис




P.S. Экзамен, чтоли начинается? В раздел "Студенты"
11K
14 января 2007 года
.nornad
125 / / 04.01.2007
Цитата: EuGenius
1.Что представляют из себя виртуальные функции? Как их реализовать на С?


Вопрос не совсем корректен. Виртуальных функций не бывает, бывают виртуальные методы. Методы присущи классам, что не позволяет реализовать виртуальные методы в чистом С. Если, конечно, не заняться реализацией собственных извращений и не расширить С. ;)

Цитата:
2.Что из себя представляет бинарный поиск?


Ответ здесь

Цитата:
4.Что такое рефакторинг?


Ответ здесь

Цитата:
5.Что из себя представляют паттерны проектирования?


Ответ здесь

Цитата:
10.Есть что-то, что можно сделать в Си, но нельзя сделать в С++?


В чистом С не силён, но, вроде бы, нет - С++ расширяет С и соответственно должен уметь всё, что умел С. Ну и два плюса в придачу. :)

Цитата:
12.Что такое инвариант?


Ответ здесь

Цитата:
13.Что понимают под раскруткой стека?


Если мне не изменяет память, то под раскруткой стека понимают изъятие с него того, что туда накидали ранее.

Цитата:
14.Какие бывают виды памяти?


Это смотря, в приложении к чему. Есть ROM, EPROM, RAM, DRAM, SRAM, например... А можно и так - оперативная, виртуальная, файл подкачки. :)
Если в приложении к программированию, то тоже разные варианты:
1. память программ и память данных;
2. код, данные и куча (для динамически выделяемых объектов).

5
14 января 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: .nornad
1. память программ и память данных;
2. код, данные и куча (для динамически выделяемых объектов).


3.стек

309
14 января 2007 года
el scorpio
1.1K / / 19.09.2006
№14
Память бывает:
а) по физическому расположению хранящихся данных: регистры процессора, микросхемы ОЗУ и файл подкачки на диске
а) по способу обращения программой: регистры, стек, "куча".
63
14 января 2007 года
Zorkus
2.6K / / 04.11.2006
Цитата: EuGenius
:)
3.Что означает O(nlogn)?


Оценка сложности алгоритма. Точный ответ - google.com, Т. Кормен "Алгоритмы, построение и анализ". Прошу перенести тему в Студенты

7.6K
14 января 2007 года
Darien
125 / / 15.01.2006
Цитата: EuGenius

12.Что такое инвариант?


Возьмём бинарный поиск. В теле алгоритма есть 2 указателя(итератора) , i,j -например. Тогда инвариант: Если искомый элемент в массиве есть, то он находится на отрезке [i.j] (в массиве).

Цитата: EuGenius

10.Есть что-то, что можно сделать в Си, но нельзя сделать в С++?


Если речь идёт именно о языке - ответ "нет". Остальное определяется ОС.

3
14 января 2007 года
Green
4.8K / / 20.01.2000
Цитата: Darien

Если речь идёт именно о языке - ответ "нет". Остальное определяется ОС.


При чем тут ОС ?

63
14 января 2007 года
Zorkus
2.6K / / 04.11.2006
Цитата: Green
При чем тут ОС ?


Самое мягкое предположение - автор имел в виду, что ядра OS Win и *nix написаны, процентов на 70, на С, и что функции их апи являются С-функциями. НО как это относится к языкам - не пойму.

361
14 января 2007 года
Odissey_
661 / / 19.09.2006
6. По поводу автоматического указателя.
Есть такая штука как auto_ptr, возможно он и имелся в виду. Реализует кроме всего еще и разрушающее копирование, т.е.
void foo(TObj * pO)
{
auto_ptr<TObj> a_pO1 = pO; // a_pO1 реализует контроль за указателем
auto_ptr<TObj> a_pO2 = pO; // a_pO2 реализует контроль за указателем
// а a_pO1 уже отдыхает

Лично сам редко пользуюсь "умным" указателем - проблемы с контейнерами и т.д.
Да и несколько таких указателей на один объект может привести к двойному уничтожению объекта, что ни есть правильно.

7. Exception Safety
Безопасная работа с исключениями. Когда все исключения должны быть отловлены и обработаны, управление возвращалась программе,а не приводило к связке terminate() - abort() (хотя есть еще и set_terminate()), все исключения критичные для продолжения работы должны приводить к корректному ее завершению и т.д. более подробней Саттер
63
14 января 2007 года
Zorkus
2.6K / / 04.11.2006
В общем, интересно получается. Автор задал вопросы, и ушел, и люди стали ломать головы и спорить. Причем он не пояснил, времени у него нету чтобы прочитать книжку, потому что через 10 часов экзамен, или по какой то другой причине он не считает нужным сам это искать - а ответ, что такое виртуальная функция или что такое бинарный поиск - можно найти в гугле секунд за полминуты, думаю, да и на форуме есть полезные ссылки. Также неясно - про тот же БП, например, определение ему надо, из учебника, пример самостоятельной реализации, алгоритмическую сложность, реализация из станд. библиотеки и т.п. Предлагаю закрыть тему, по крайней мере пока автор не объявится.
9.0K
14 января 2007 года
EuGenius
48 / / 12.01.2007
Извините. Но я выложил те вопросы, на которые не смог найти ответы или не понял из того, что нашел. А виртуальные функции из 1 вопроса меня интересовали в реализации чистого С.
Спасибо всем за внимание. Закрывайте тему.
7.6K
18 января 2007 года
Darien
125 / / 15.01.2006
Цитата: Zorkus
Самое мягкое предположение - автор имел в виду, что ядра OS Win и *nix написаны, процентов на 70, на С, и что функции их апи являются С-функциями. НО как это относится к языкам - не пойму.


Это не имел в виду :) Когда говорят про Си или Си++, то обязательно не забывают , про их Standard Library. Как вы знаете там некоторые ф-ции во-первых зависят от ОС, во-вторых, некоторых в винде и вовсе уже не стало. В третьих, режим ядра/режим защищенный , ну наконец модель памяти, разные размеры для типов данных итд. пример : беру досовский Борланд Си и мучу графику - в современном Си++ неактуально. Или же беру тот же Си и мучу работу с Дос прерываниями.

31K
16 сентября 2007 года
leva_fad
3 / / 16.09.2007
Я прошу прощения у тех, кто считает что тема закрыта, но раз уж я нашел её и почерпнул из неё инфу. то она не совсем закрыта.

Цитата: EuGenius
:)
14.Какие бывают виды памяти?



Данный вопрос наверняка относить в классу памяти. На такою постановку вопроса ответ следующий:
auto, extern, register, static
Для получения более подробной информации, читайте книги по С++, там данный вопрос рассматривается.

320
16 сентября 2007 года
m_Valery
1.0K / / 08.01.2007
Смотрим Герб Саттер Решение сложных задач на С++,стр.258-259.Там написано,что следует различать 5 разных типов памяти : свободная память ( new/delete ), куча ( malloc/free ), глобальная область (статические,глобальные переменные,переменные области видимости и т.д ),стек ( автоматические пременные ),константные данные(строки и т.п).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог