Ce pointeur C ++





указатель this в c++, this c++, this с++

В этом уроке мы достаточно поверхностно рассмотрим указатель this, чтобы начинающие программисты познакомились с ним и имели представление о том где он встречается и как работает. Хочу, pour un début, рассмотреть пару несложных примеров. В первом будут определены fonctions: одна из которых будет записывать данные в переменные, а втораяотображать их на экран. Во втором примере определим classe, который будет содержать два метода, выполняющих такую же работу, как и функции из первого примера.

Когда будете рассматривать эти примеры, обратите внимание на то, как функции из первого примера и методы класса из второго примера, будут принимать параметры.

В этом примере вы, скорей всего, не увидели ничего нового и сложного для вас. Все простофункции лишь принимают параметры и выполняют определённые действия с этими параметрами. Теперь напишем простой класс, в котором реализуем методы очень похожие на функции из первого примера. Но кое-чем они будут отличаться. А именно тем, что им не надо принимать в виде параметров, les membres de la classe, чтобы внести изменения в них.

Рассмотрев этот пример, вы увидели, что определяя методы в теле класса, мы не прописываем параметры в сигнатуре. И вызывая эти методы из главной функции, мы так же не указываем с какими данными им работать. Но каким-то образом данные вносятся именно в те члены класса, которые указаны в теле методов. Как же методыпонимают”, с какими данными и с каким объектом класса им надо работать? le fait, что в методы класса, неявно передается в виде параметра указатель this (указатель на объект класса). Происходит это автоматически. Мы этого не видим, так как этот указательесть скрытый первый параметр любого метода класса.

Указатель this хранит адрес определённого объекта класса. В рассмотренном примере он хранит адрес объекта objectOfClass. Таким образом он неявно указывает методам класса с данными какого объекта надо работать.




Je note, что у программистов все же есть возможность применять указатель this явно. Если бы мы определяли метод enterData() с явным использованием this, это выглядело бы так:

указатель this в c++, this c++, this с++

environ:

указатель this в c++, this c++, this с++

Конкретно в этих случаях можно обойтись и без явного использования this. Но иногда явного использования не избежать. К примеру в следующем примере, this не позволит компилятору запутаться в именах членов класса и параметров которые принимает конструктор.

En ligne 10 мы определили конструктор с параметрами, имена которых совпадают с именами членов класса: someName et someAge. Далее чтобы дать компилятору понять что именно и куда надо скопировать, мы явно используем указатель this:

cela signifie que, что в член класса someAge необходимо записать значение, которое будет задано про создании объекта класса.

указатель this в c++, this c++, this с++

Pour résumer : ce pointeurэто указатель, который хранит адрес конкретного объекта класса. Он присутствует в виде скрытого первого параметра в каждом методе класса (кроме статических методов). Типом этого указателя является имя класса. В методах класса, при необходимости, можно использовать this явно. Однако явно объявлять, инициализировать или изменять этот указатель, il n'y a aucune possibilité.

Надеюсь боле-менее вы разобрались с этой темой. Если есть вопросы – s'il vous plaît commenter.

Pour soutenir notre site – cliquez sur la tirelire et choisir un moyen pratique.

Bulletin de nouvelles leçons sur la programmation:


Je suis d'accord pour recevoir des messages de purecodecpp.com sur mon e-mail

date
page
Указатель this в C++
évaluation
5

3 réflexions sur "Ce pointeur C ++

  1. И что же получается? Есть this, но можно и объявить свой указатель, и использовать вместо this?

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

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>