Aracılığıyla paylaş


Birincil ifadeleri

Birincil ifadeleri daha karmaşık ifadeler yapı taşlarıdır. Hazır, adları ve kapsam çözünürlük operatörü tarafından tam adları olmaları (::). Birincil ifade aşağıdaki biçimlerden birini içerebilir:

literal
this
:: name
name 
( expression )

A hazır sabit bir birincil ifadesidir. Kendi belirtimi formu üzerinde kendi türüne bağlıdır. Bkz: hazır sabit değerleri belirtme hakkında tam bilgi için.

Bu bir sınıf nesnesi için bir işaretçi bir anahtardır. Başvuramaz üye işlevler ve işlev çağrılmış sınıfın örneğini işaret içinde kullanılabilir. Bu anahtar sözcüğü, bir sınıf üyesi işlev gövdesinin dışında kullanılamaz.

Tür Bu işaretçisi type*** const** (burada type sınıf adı) özellikle değiştirme işlevlerini içinde Bu işaretçi.  Aşağıdaki örnek üye işlev bildirimleri ve türlerini gösterir Bu:

// expre_Primary_Expressions.cpp
// compile with: /LD
class Example
{
public:
    void Func();          //  * const this
    void Func() const;    //  const * const this
    void Func() volatile; //  volatile * const this
};

Bkz: Bu işaretçi türünü türünü değiştirme hakkında daha fazla bilgi için Bu işaretçisi.

Kapsam çözünürlük operatörü (::) ve ardından birincil ifade bir ad kabul ettiğiniz anlamına gelir. Tür adları, genel kapsamında üye adları adları olmalıdır. Bu ifadenin türü adı bildirimi tarafından belirlenir. L-değeri olan (başka bir deyişle, atama işleci ifade sol tarafında görünebilir) bildirmek adı l-değeri ise. Bu ad geçerli kapsamda gizli bile kapsam çözünürlük operatörü için başvuru olarak genel bir ad verir. Bkz: Kapsam kapsam çözünürlük operatörü nasıl örneği için.

Parantez içine alınmış bir ifade, tür ve değer olanlar unparenthesized ifadesi aynı birincil bir ifadesidir. Unparenthesized ifade l-değeri ise l-değeri olur.

Yukarıda verilen birincil ifade sözdizimi bağlamında adı herhangi bir şey için açıklanan sözdiziminde anlamına gelir adları, kapsam çözünürlük operatörü adından önce kullanırken, yalnızca bir sınıf içinde oluşabilecek ad türlerini izin verilmez, ancak. Bu kullanıcı tanımlı dönüştürme işlevi ve yıkıcı adlarını içerir.

Birincil örnekleri şunlardır:

100 // literal
'c' // literal
this // in a member function, a pointer to the class instance
::func // a global function
::operator + // an global operator function
::A::B // a global qualified name
( i + 1 ) // a parenthesized expression

Aşağıdaki örnekler tümünü kabul edilir adlarıve çeşitli formlarda bu yüzden birincil ifadeleri:

MyClass // a identifier
MyClass::f // a qualified name
operator = // an operator function name
operator char* // an converstion operator function name
~MyClass // a destructor name
A::B   // a qualified name
A<int> // a template id

Ayrıca bkz.

Başvuru

Türde ifadeler