Обложка канала

Goal Gesture программирование, IT

Новости, статьи и полезные материалы из мира IT

Goal Gesture программирование, IT

4 года назад
Открыть в
10 вопросов и ответов на собеседовании C++ разработчика 1. В чем разница между указателем и ссылкой в С++? Ответ: Указатель может быть переназначен n-раз, в то время как ссылка не может быть переназначена после бинда. Указатели могут указывать в NULL, тогда как ссылка всегда ссылается на объект. Программист не может получить адрес ссылки, как это возможно с указателями, но можно взять адрес объекта, на который указывает ссылка, и выполнить действия с ним. 2. Чем new() отличается от malloc()? Ответ: New() является препроцессором, в то время как malloc() - методом. 3. Использование точки в С++ Ответ: Точка - это чаще всего ссылка на метод или свойство объекта в ООП. Связь между объектом, атрибутами и методами обозначается точкой («.»), установленной между ними. 4. Что такое this? Ответ: Ключевое слово this передается всем нестатическим методам как скрытый аргумент и доступен в виде локальной переменной внутри всех нестатических методов. Оператор this является постоянным указателем, который хранит в памяти ссылку на текущий объект. 5. Что такое динамическая и статическая типизация? Ответ: Статически типизированные языки - это языки, в которых проверка типа совершается во время компиляции, а в динамически типизированных - в рантайме. В С++, пользователь должен сообщить компилятору, с каким типом объекта он работает во время компиляции. 6. Что подразумевается под делегатом? Ответ: Делегат - это объект, действующий от имени, или в паре с другим объектом, обнаружившим событие во время выполнения программы. 7. Что такое виртуальная функция? Ответ: Виртуальная функция - это метод, который используется в рантайме для замены реализованного функционала, предоставляемого базовым классом. Ключевое слово virtual используется для создания виртуального метода. 8. Что означают ключевые слова volatile и mutable? Ответ: volatile сообщает компилятору, что переменная может измениться без его ведома. Эти переменные не кэшируются компилятором и поэтому всегда считываются из памяти. mutable может использоваться для переменных класса. Такие переменные могут изменяться изнутри функций класса. 9. В каком порядке инициализируются члены класса? Ответ: Члены класса создаются в порядке их объявления в классе. Уничтожаются они в обратном порядке. 10. Как защитить объект от копирования? Ответ: Сделать private конструктор копирования и оператор =. class NonCopyable { public: NonCopyable(){} private: NonCopyable(NonCopyable&){} private: void operator=(const NonCopyable&){} }; NonCopyable a; NonCopyable b = a a = b;