Aracılığıyla paylaş


Bağımsız değişken eşleme

Aşırı yüklü işlevler geçerli kapsamda işlev çağrısında sağlanan bağımsız değişkenler işlev bildirimleri, en iyi eşleştirme için seçilir.Uygun bir işlev bulunursa, bu işlevi çağrılır. ""Bu bağlamda uygun aşağıdakilerden birini gösterir:

  • Tam bir eşleşme bulundu.

  • Önemsiz dönüştürme gerçekleştirildi.

  • Tamamlayıcı bir yükseltme gerçekleştirildi.

  • İstenen bağımsız değişken türü için standart bir dönüşüm var.

  • Bir kullanıcı tanımlı dönüştürme (Dönüþtürme iþleci veya kurucu) istenen bağımsız değişken türü bulunmaktadır.

  • Üç nokta ile gösterilen bağımsız değişken bulunamadı.

Derleyici her bağımsız değişken işlevler aday kümesi oluşturur.Aday, asıl bağımsız değişkeni o konuma biçimsel bağımsız değişkenin türü için dönüştürülebilir işlevleri işlevlerdir.

"En iyi eşleşen işlevleri" kümesi her bağımsız değişken için yerleşik olarak bulunan ve kesişim kümeleri seçili işlevidir.Aşırı belirsiz kesişim birden fazla işlev içeriyorsa ve bir hata üretir.Sonuçta seçilmiş olan her zaman en az bir bağımsız değişken grubundaki her işlev'den daha iyi bir eşleşme işlevidir.(Düz bir kazanan varsa) durumda değilse işlev çağrısı bir hata üretir.

Aşağıdaki tanımlamalar düşünün (işlevleri işaretlenmiş Variant 1, Variant 2, ve Variant 3, aşağıdaki tartışmasında tanımlanması için):

Fraction &Add( Fraction &f, long l );       // Variant 1
Fraction &Add( long l, Fraction &f );       // Variant 2
Fraction &Add( Fraction &f, Fraction &f );  // Variant 3

Fraction F1, F2;

Aşağıdaki ifadeyi düşünün:

F1 = Add( F2, 23 );

İki önceki deyimi oluşturur:

1. Set: Türü kesir ilk bağımsız aday işlevleri

Kümesi 2: Aday işlevleri Whose ikinci bağımsız değişken dönüştürülebilir int türünde için

Değişken 1

Değişken 1 (int dönüştürülebilir long standart dönüştürme kullanarak)

Variant 3

 

2 Set iþlevler þunlardýr: kendisi için orada biçimsel parametre türüne örtük dönüştürmeler gerçek parametresi türünden işlevlerdir ve bu tür işlevler arasında "gerçek parametre türü, biçimsel parametre türüne dönüştürme maliyeti" en küçük olan bir işlevi yoktur.

Bu iki kesişimini varyant 1'dir.Belirsiz işlev çağrısı, bir örnektir:

F1 = Add( 3, 6 );

Yukarıdaki işlev çağrısı aşağıdaki yapıları:

1. Set: Aday işlevleri olduğunu sahip ilk bağımsız değişken türü int

2. Set: Aday işlevleri olduğunu sahip ikinci bağımsız değişken türü int

Variant 2 (int dönüştürülebilir long standart dönüştürme kullanarak)

Değişken 1 (int dönüştürülebilir long standart dönüştürme kullanarak)

Bu iki kümesi arasındaki kesişim boş olduğunu unutmayın.Bu nedenle, derleyici bir hata iletisi oluşturuyor.

Bir işlevi ile eşleşen bağımsız değişkeni için n varsayılan bağımsız değişkenleri kabul n+ 1 ayrı işlevleri, her biri farklı sayıda bağımsız değişken.

Joker karakter üç nokta (...) görür; Bu gerçek bir bağımsız değişken eşleşir.Son derece dikkatli olunmalıdır, işlevde kümeleriyle tasarım değil, bu birçok belirsiz kümeleri için yol açabilir.

[!NOT]

Bir işlev çağrısı karşılaşılana kadar aşırı yüklü işlevlerin belirsizlik belirlenemiyor.Bu noktada, her bağımsız değişkeni işlev çağrısı için kümeleri yerleşiktir ve belirli aşırı var olup olmadığını belirleyebilirsiniz.Bu özel bir işlev çağrısını tarafından evoked kadar ambiguities kodunuzda kalabileceği anlamına gelir.

Ayrıca bkz.

Başvuru

Aşırı