Как получить адрес памяти объекта со ссылкой `this` внутри класса в C ++ - PullRequest
0 голосов
/ 30 марта 2020

Как я могу получить адрес памяти объекта внутри класса со ссылкой this в C ++.

Я могу получить адрес памяти объекта вне класса, используя следующее:

Obj obj();
cout << &obj << endl;

Я хочу сделать это со ссылкой this. Что-то вроде:

void Obj::method()
{
    cout << &this << endl;
}

Но приведенный выше код выдает ошибку. Возможно ли это в C ++.

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Я могу получить адрес памяти объекта вне класса, используя следующее:

Obj obj();
cout << &obj << endl;

Это не адрес памяти объекта типа Obj. Это адрес памяти функции, которая возвращает Obj. Однако указатель на функцию не будет напечатан потоком, а вместо этого будет преобразован в логическое значение, поэтому вы всегда увидите 1.


void Obj::method()
{
    cout << &this << endl;
}

Вы не можете взять адрес this. Вы тоже не должны этого делать, потому что вам нужен адрес объекта. this уже является указателем на этот объект, поэтому просто не используйте оператор addressof.

1 голос
/ 30 марта 2020
void Obj::method()
{
    cout << &*this << " or " << this << endl;
}
...