Aracılığıyla paylaş


Ýþleç için genel kurallar

Aşağıdaki kurallar nasıl aþýrý yüklenmiþ Ýþleçler oranları uygulanır.Ancak, bunlar için geçerli değildir Yeni ve silmek işleçler, ayrı ayrı ele alınmıştır.

  • Yeni İşletmenleri gibi tanımlayamazsınız **.

  • Yerleşik veri türlerine uygulandığında işlecin anlamını yeniden tanımlanamaz.

  • Aþýrý yüklenmiþ Ýþleçler başvuramaz sınıf üye işlevi veya genel bir işlev ya da olmalıdır.Özel veya korumalı bir sınıf üyesi erişmesi gereken bir genel işlevi, o sınıfın bir arkadaş bildirilmelidir.Genel işlevin sınıf veya numaralanmış tür olan veya bir sınıf bir başvurudur veya türü numaralandırılmış en az bir bağımsız değişken gerçekleştirmeniz gerekir.Örne?in:

    // rules_for_operator_overloading.cpp
    class Point
    {
    public:
        Point operator<( Point & );  // Declare a member operator 
                                     //  overload.
        // Declare addition operators.
        friend Point operator+( Point&, int );
        friend Point operator+( int, Point& );
    };
    
    int main()
    {
    }
    

    Önceki kod örneği az bildirir-operatörüne üye işlevle; Ancak, toplama iþleçlerini arkadaşının genel işlevleri bildirilir.Not birden çok uygulama için verilen bir işleç sağlanabilir.Önceki toplama operatörü durumunda commutativity kolaylaştırmak için iki uygulamaları sağlanır.Eklediğiniz yalnızca büyük olasılıkla bu işleçleri ise bir Point için bir Point, int için bir Point, vb., uygulanabilir.

  • İşleç önceliği gruplandırma uyacak ve sayýsý yerleþik türlerle tipik kullanımları tarafından dikte.Bu nedenle, kavramı ifade etmek için yolu yoktur "2 ve 3 türünde bir nesne ekleme Point," eklenecek 2 bekleniyor x koordinat ve 3 eklenecek y koordine etmek.

  • Tekli operatörler üye işlev olarak bildirilen hiçbir bağımsız değişkenleri alır; genel işlevler bildirirseniz, bunlar bir bağımsız değişken alır.

  • İkili işleçlerin üye işlev olarak bildirilen bir bağımsız değişken alır; bildirilen gibi genel işlevler, iki bağımsız değişkeni tümüyle ele.

  • Bir işleç bir tekli veya ikili işleç olarak kullanılıp kullanılmayacağını (&, *, +, ve ), ayrı ayrı her kullanım aşırı yüklenebilir.

  • Aþýrý yüklenmiþ Ýþleçler varsayılan bağımsız değişkenleri olamaz.

  • Tüm aşırı dışında atama işleçleri (operator=) türetilmiş sınıflar tarafından miras alınır.

  • Üye işlevi aşırı işleçler için ilk bağımsız değişken her zaman için nesne sınıfı türü değil işleci olan (işleç bildirilir veya bu sınıftan türetilmiş bir sınıf sınıf) etkinleştirilir.İlk değişken için hiçbir dönüşümler sağlanır.

Not herhangi bir işleci anlamını tamamen değiştirilebilir.Adres, anlamını içeren (ve), atama (=) ve işlev çağrısı operators.Ayrıca, bağlı yerleşik türleri için dayanıyordu kimlikleri Ýþleç kullanılarak değiştirilebilir.Örneğin, aşağıdaki dört ifade tamamen değerlendirildiğinde genellikle eşdeğerdir:

var = var + 1;
var += 1;
var++;
++var;

Bu kimlik üzerine operatörler aşırı sınıf türleri dayanıyordu olamaz.Üstelik bazı temel türü için bu işleçlerden birini kullanmak üzere örtülü gereksinimleri için aþýrý yüklenmiþ Ýþleçler rahat.Örneğin, toplama/atama işleci +=, sol işlenenin bir değeri m; temel türler uygulandýðýnda gerektirir işleç aşırı yüklü olduğunda böyle bir gereklilik yoktur.

[!NOT]

Tutarlılık açısından genellikle tanımlama işleçleri aşırı yerleşik türleri modelini izleyin en iyi olur.Fazla yüklenmiş işleç semantiği anlamını diğer bağlamlarda önemli ölçüde farklılık, daha yararlı daha kafa karıştırıcı olabilir.

Ayrıca bkz.

Başvuru

Private int value