Вопросы
Почему код явно вызывает статический метод через указатель, равный null?
Я видел подобный код в нескольких старых проектах:
class Class {
static void Method() {}
};
((Class*)0)->Method();
Этот код содержит неопределенное поведение, так как включает разыменование нулевого указателя (что бы ни происходило после этого). Он действительно не имеет смысла —...
Определение typedef для указателя на функцию?
Я изучаю, как динамически загружать DLL, но не могу понять следующую строку кода:
typedef void (*FunctionFunc)();
У меня есть несколько вопросов. Буду признателен, если кто-то сможет на них ответить.
- Зачем используется
typedef
? - Синтаксис выглядит странно; после
void
не должно...
Сравнение регулярного приведения типов, static_cast и dynamic_cast
Суть проблемы:
Я пишу на C и C++ почти двадцать лет, но есть один аспект этих языков, который я никогда не понимал. Я, конечно, использовал обычные преобразования (касты), например:
MyClass *m = (MyClass *)ptr;
Но есть еще два типа приведения типов, и я не знаю, чем они...
Почему следует использовать указатель вместо самого объекта?
Я пришёл из мира Java и начал работать с объектами в C++. Но меня смутило, что многие разработчики часто используют указатели на объекты, а не сами объекты. Например, вот так:
Object *myObject = new Object;
вместо этого:
Object myObject;
Также, вместо того чтобы...
Разница между const int*, const int * const и int * const?
Я всегда путаюсь, как правильно использовать const int *
, const int * const
и int * const
. Существенно ли их различие? Существуют ли какие-то правила, определяющие, что можно, а что нельзя делать с этими указателями?
Мне нужно знать все "можно" и "нельзя" в контексте присваивания, передачи...