C++ указатель this
В C++,thisУказатель this — это специальный указатель, который указывает на экземпляр текущего объекта.
В C++, каждый объект может черезthisУказатель this используется для доступа к своему собственному адресу.
thisскрытый указатель, который может использоваться в функциях-членах класса и может использоваться для указания на вызывающий объект.
Когда вызывается функция-член объекта, компилятор неявно передаёт адрес этого объекта как указатель this.
Дружественные функции не имеютthisуказателя, потому что друг не является членом класса; только функции-члены имеют его.thisуказатель.
Следующий пример помогает лучше понять концепцию указателя this:
Пример
Результат выполнения приведенного выше кода:
Value: 42
Разбор примера:
-
В приведенном выше примере мы определили класс с именем MyClass, у которого есть приватная переменная-член value.
-
Функция setValue() в классе используется для установки значения value, а функция printValue() — для вывода значения value.
-
В функции setValue() мы используем указатель this, чтобы обратиться к переменной-члену value текущего объекта, и присваиваем ей переданное значение. Это явно сообщает компилятору, что мы хотим получить доступ к переменной-члену текущего объекта, а не к параметру функции или локальной переменной.
В функции printValue() мы аналогично используем указатель this, чтобы обратиться к переменной-члену value текущего объекта, и выводим её.
-
В функции main() мы создаем объект obj класса MyClass, затем используем функцию setValue(), чтобы установить value в 42, и выводим его с помощью функции printValue().
-
Используя указатель this, мы можем получать доступ к переменным-членам текущего объекта в функциях-членах, даже если они имеют те же имена, что и параметры функций или локальные переменные. Это позволяет избежать конфликтов имен и гарантирует, что мы обращаемся к правильной переменной.
Другие примеры
Следующий пример используется для сравнения объёмов параллелепипедов:
Пример
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
调用构造函数。 调用构造函数。 Box2 的体积大于或等于 Box1Другие расширения