Bu bir implicit conversion operator numaralı.
Örtük dönüşüm operatörleri, aksi halde dolaylı olarak bir hedef türüne dönüştürülemeyecek türde bir tür izin verir. Bunlar Foo
nesne sınıfı dolaylı dönüştürülecek olan aşağıdaki sözdizimini sahiptir ve Bar
hedef sınıfıdır:
bu operatörün daha yaygın örneği mantıksal bir değer olarak bir nesneyi dönüştürme olan
class Foo{
public:
operator Bar(); // allow implicit conversion of Foo objects to Bar
};
geçerlilik kontrolü. Bu standart kütüphane akışları ve akıllı işaretçiler ile görülebilir.
Sen Mevcut bir dönüşümü engelleyen sözdizimi, bir varyasyonun varlığı dikkat ve bunun yerine açık dönüştürme yapar gerektiğini
:
class Foo{
public:
explicit operator Bar(); // allow explicit conversion of Foo objects to Bar
};
yanlışlıkla bir tür beslemek Bu bir derleme programı tarafından ısırıldı engeller B
türüne dönüştürülebilen A
, yalnızca B
kabul eden bir işleve dönüştürülebilir. Elbette, için ne istediğinizi olabilir, ama her zaman değil, ve bunu açık bir dönüştürme ihtiyacı olan insanlara yardımcı olmak için bunu dile eklemeye karar verdiler.
Açık dönüştürme operatörü
, origin nesnesi bir nesne oluşturmak ya yapı ile veya açık döküm yoluyla (hedef tip bir nesnenin yapımında kullanarak): B{A}
operatör örtülü bir olduğunu dönüşüm operatörü. En yaygın biçim, bir sınıf nesnesinin unique_ptr ve shared_ptr –
jaggedSpire