меньше обычного?
бо он может хранить только оффсет внутри класса
И в нём участвуют только младшие байты?
Потому что компилятор msvc
Ну, ответ верный, мне интересно более конкретно
На каких компиляторах указатель на член больше 8 байт?
во волшебники
Ну, это же член...
А что конкретного? Число оно и 4 байта число-смещение
Ну надо же оффсет относительно чего указать
Относительно начала объекта
А это не абсолютный адрес получается?
Нет, это вообщето отображение (читай фукнция)
Давай будем зрить в корень: Указатель на данные-члены — это не указатель. Почему ты хочешь вообще соотносить размеры , занимаемые этими типами?
там смещение this хранится, помимо указателя
Да у нас просто небольшой спор насчёт размеров указателей был :)
Классно спорить о размерах указателей и как аргумент приводить размер НЕ УКАЗАТЕЛЯ, да?
Ну это мне привели, ну и в целом это же таки указатель. Смещение – тоже адрес, нет?
Это таки НЕ УКАЗАТЕЛЬ.
А что это?
Знаешь разницу между вектором и точкой?
Указатель на член
Ну вот смещение это вектор, а указатель это точка. Это разные сущности по природе
Ты можешь с помощью указателя получить данные, на которые он указывает?
С помощью указателя на член тоже могу
#include <iostream> struct S { int x; }; int main(int argc, char *argv[]) { S s{ 1 }; auto p = &S::x; std::cout << s.*p; } ?
Ну, из s.*p; убери s -то!
s.*p это base + rva, имея только p ничего получить нельзя
Ну, я это имел в виду под могу :)
А я это имел в виду под НЕ МОЖЕШЬ.
Потому что для УКАЗАТЕЛЯ такого не надо.
Обсуждают сегодня