2010-01-10 18 views
15

A sınıfı için tamsayılı bir dönüşüm operatörü;Dönüşüm operatörü bir değeri nasıl döndürür?

operator int() //Here we don't specify any return type 
{ 
    return intValue; 
} 

Yukarıdaki işlev, dönüş değeri türü belirtilmiyor gibi göründüğünde nasıl bir değer döndürebilir? "Bir şey" döndürmüyor gibi görünüyor, ama ben void olmadığını biliyorum.

Bir dönüş türü belirtilmemişken bu nasıl anlamlıdır?

+0

Tip imzasının önemini çok fazla arttırmanın düşüncenizdeki engel olduğunu düşünüyorum. Tip imzası * genellikle * size dönüş türünü söyleyen - * döner * işlevinin dönüşü durumunda, dönüş türünün sözdizimsel olarak işlevin "adı" gibi görünmesiyle verilir. Dönüş tipi aşırı yüklenmelerden söz etmek için –

cevap

20

operator T() dönüş türü her zaman T dur. Özel bir C++ vakası.

Aynı adı (double foo() ile örneğin int foo() çatışmaları) arada bulunamaz dönüş türüne göre sadece farklı standart fonksiyon prototip sözdizimini T foo() 2 çünkü işlevlerini kullanmaz. Bu sözdizimi kullanılırsa, yalnızca 1 dönüşüm operatörü aşırı yükünü tanımlayabilirsiniz, bu istenmeyen bir durumdur.

+0

+1 –

6

operator T()'un T türünde bir dönüş değeri her zaman T'dur.

3

Dönüştürme işlemcisinin adı türdür. Durum böyle olmasaydı, aslında bir çift döndüren bir int dönüşüm işleci (örneğin) tanımlayabilirsiniz. Benzer bir düşünme çizgisi, dönüş türü olmayan kurucular için de geçerlidir.

İlgili konular