Вопросы
Что такое ** в C++?
Описание проблемы
Я столкнулся с некоторым кодом, а также с ошибками, которые сгенерировал мой компилятор, содержащими токен **
перед переменной (например, имя_переменной unreferenced - или что-то подобное, точно не помню). Я довольно уверен, что это связано с указателями. Если бы мне...
Почему код явно вызывает статический метод через указатель, равный null?
Я видел подобный код в нескольких старых проектах:
class Class {
static void Method() {}
};
((Class*)0)->Method();
Этот код содержит неопределенное поведение, так как включает разыменование нулевого указателя (что бы ни происходило после этого). Он действительно не имеет смысла —...
Статические глобальные переменные в C++
Я хотел бы создать массив целых чисел с помощью метода malloc
. Я хочу, чтобы этот массив был глобальным и использовался в любом месте моей программы. Я поместил код в заголовочный файл, который выглядел так:
static int *pieces;
Затем я создал функцию, которая заполняет массив нужными...
Определение 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
. Существенно ли их различие? Существуют ли какие-то правила, определяющие, что можно, а что нельзя делать с этими указателями?
Мне нужно знать все "можно" и "нельзя" в контексте присваивания, передачи...