1) Чем этот указатель отличается от других указателей?
this
является ключевым словом.Это не может и не должно быть объявлено.this
неявно доступно в нестатических функциях-членах.this
относится к аргументу экземпляра функции-члена.
И наоборот, переменные-указатели могут и обычно должны быть объявлены.Пример объявления указателя:
void* ptr = nullptr;
Как я понимаю, указатели указывают на память в куче.
Вы неправильно поняли.Указатели не ограничиваются указанием только в кучу 1 .
Означает ли это, что объекты всегда создаются в куче
Учитывая, что ваша предпосылка невернаОтвет остается без ответа на этот вопрос.Объекты не ограничиваются построением только в куче 1 .Вот пример:
void foo() {
int i;
int* iptr = &i;
}
В примере есть два объекта, оба из которых имеют автоматическое хранение (т.е. не динамическое хранение, т.е. не куча 1 ).Один из них является целым числом, а другой - указателем на целое число.Обратите внимание, что указатель не указывает на кучу 1 .
2) Можем ли мы украсть этот указатель в конструкторе перемещения или назначении перемещения?
Зависит от того, что вы подразумеваете под «воровством».Но, вероятно, нет.
1 В языке C ++ нет понятия «кучи» памяти.Вы, вероятно, ссылаетесь на динамическое хранилище или бесплатный магазин.