Qu'est-ce que le retour *ce' signifie en C++?
Je suis de la conversion d'un programme C++ pour le C#, mais cette partie m'a confondu. Ce n'retour * - ce que cela signifie?
template< EDemoCommands msgType, typename PB_OBJECT_TYPE >
class CDemoMessagePB : public IDemoMessage, public PB_OBJECT_TYPE
{
(...)
virtual ::google::protobuf::Message& GetProtoMsg() { return *this; }
}
Comment serait-il traduire en C#?
La balise doit être en C++.
OriginalL'auteur Kloar | 2013-08-10
Vous devez vous connecter pour publier un commentaire.
this
signifie pointeur vers l'objet, de sorte*this
est un objet. Afin de vous retourner un objet c'est à dire,*this
renvoie une référence à l'objet.OriginalL'auteur Rahul Tripathi
Montre que, si vous essayez d'utiliser
return *this;
sur une fonction dont le type de retour estType
et pasType&
, C++ va essayer de faire une copie de l'objet, puis immédiatement appeler le destructeur, généralement pas l'intention de comportement. Si le type de retour doit être une référence comme dans votre exemple.OriginalL'auteur Stephen Brooks
Dans votre cas particulier, vous êtes de retour à la référence à la " ce, étant donné que le type de retour de la fonction est une référence (&).
Parlant de la taille de retours de mémoire, c'est le même que
Mais l'utilisation du temps d'appel diffère.
Au temps d'appel, vous allez stocker la valeur de retour de la fonction par quelque chose comme:
Correct. Édité ^^
OriginalL'auteur Lake
Vous êtes juste de retour d'une référence à l'objet.
this
est un pointeur et que vous êtes un déréférencement.Il se traduit par C#
return this;
dans le cas que vous n'êtes pas affaire avec une primitive.OriginalL'auteur Joseph Pla
L'aide d'un pointeur on peut directement accéder à la valeur stockée dans la variable pour laquelle il pointe. Pour ce faire, il nous suffit de faire précéder le pointeur à l'identification d'un astérisque (*), qui agit comme
dereference
opérateur et qui peut être traduit littéralement par "valeur pointée par".OriginalL'auteur Ehsan
Comme en C#
this
est implicite pointeur vers l'objet que vous utilisez actuellement.Dans votre cas particulier, comme vous le renvoyer une référence
&
à l'objet, vous devez utiliser*this
si vous souhaitez retourner l'objet sur lequel vous travaillez actuellement.N'oubliez pas qu'une référence prend la variable elle-même, ou, dans le cas d'un pointeur (
this
), l'objet pointé (*this
), mais pas le pointeur (this
).OriginalL'auteur bash.d