Aracılığıyla paylaş


Adres, işleç: &

& cast-expression

Notlar

Adres, işlem işleci (ve), işlenen adresini alır.Adres, işletmenin işlenen işlev göstergesi ya da, bir bit alanı değil ve birlikte bildirilmedi nesne atayan bir m değerli olabilir kayıt depolama sınıfı Belirleyicisi.

Adres, işleci yalnızca temel, yapısı, sınıf, değişkenler uygulanabilir veya dosya kapsam düzeyinde veya çok bildirilen birleþim türleri alt indisli bir dizi başvuruları.Bu ifadelerde, adresi işleci içermeyen bir sabit ifade için eklenebilir veya adresi, ifadeden toplanabilir.

Uygulandığında işlevler veya m-değerlerini, ifadenin sonucunu bir işaretçi türü (r-value) işlenen türünden türetilir.Örneğin, işlenenin türü ise char, ifadenin sonucunu türü işaretçisi olan char.Uygulanan adres, operatörü, const veya volatile nesneleri, değerlendiren consttype***** veya volatiletype*****, type orijinal nesnenin türüdür.    

Ne zaman adres, işleci uygulandığı için bir tam adı, sonuç bağlıdır tam adı statik üyesi belirtir.Bu durumda, üye bildiriminde belirtilen türü işaretçisi sonucudur.Statik üyesi değilse, sonuç bir üye işaretçidir ad belirttiği sınıfının tam-sınıf-adı.(Bkz: Birincil ifadeleri hakkında daha fazla bilgi için tam-sınıf-adı.) Aşağıdaki kod parçası, nasıl sonuç, üye statik olmasına bağlı olarak farklı gösterir:

// expre_Address_Of_Operator.cpp
// C2440 expected
class PTM {
public:
           int   iValue;
    static float fValue;
};

int main() {
   int   PTM::*piValue = &PTM::iValue;  // OK: non-static
   float PTM::*pfValue = &PTM::fValue;  // C2440 error: static
   float *spfValue     = &PTM::fValue;  // OK
}

Bu örnekte, ifade &PTM::fValue türü ortaya çıkarır float * türü yerine float PTM::* çünkü fValue statik bir üyesidir.

Yalnızca işlev sürümünü başvurulan açık olduğunda bir işlevde adresi alınabilir.Bkz: Aşırı işlevler adresi aşırı işlevi belli bir adresi edinme hakkında bilgi için.

Adres, operatör için bir başvuru türü uygulama işleci başvurusu bağlandığı nesne uygulama aynı sonucu verir.Örne?in:

Örnek

// expre_Address_Of_Operator2.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
   double d;        // Define an object of type double.
   double& rd = d;  // Define a reference to the object.

   // Obtain and compare their addresses
   if( &d == &rd )
      cout << "&d equals &rd" << endl;
}

Çıktı

&d equals &rd

Aşağıdaki örnek, bir işlev işaretçisi argüman için adres, işlecini kullanıyor:

// expre_Address_Of_Operator3.cpp
// compile with: /EHsc
// Demonstrate address-of operator &

#include <iostream>
using namespace std;

// Function argument is pointer to type int
int square( int *n ) {
   return (*n) * (*n);
}

int main() {
   int mynum = 5;
   cout << square( &mynum ) << endl;   // pass address of int
}

Çıktı

25

Ayrıca bkz.

Başvuru

Tekli operatörler ifadelerle

C++ işleçleri

Operatör önceliği ve ilişkilendirilebilirlik

Lvalue başvuru Bildiricisi: &

Kavramlar

Gerekebilen ve adresi, işleçleri