kodum örnektir:Aşırı Yükleme operatörü Burada>
derleyici X Y'den operatöre> için "sorumluluk taşımak" için çalışıyor Nedenclass X
{
public:
void f() {}
};
class Y : public X
{
public:
X& operator->() { return *this; }
void f() {}
};
int main()
{
Y t;
t.operator->().f(); // OK
t->f(); // error C2819: type 'X' does not have an overloaded member 'operator ->'
// error C2232: '->Y::f' : left operand has 'class' type, use '.'
}
? X :: op-> uyguladığım zaman, oraya X'i geri dönemezim - derleme hatası "sonsuz yineleme" yazarken X: op-> 'dan Z geri döndürür, yine Z'nin operatöre sahip olmadığını söyler. hiyerarşide daha yüksek.
Bu ilginç davranışı herkes açıklayabilir mi? :)
ben 'operatöre>' sadece ihtiyaçlarını döndüren ne olursa olsun desteklemek için, bir işaretçi döndürür gerekendir söyleyemem. – GManNickG
@ GMan- İyi nokta. Burada basitlik için gidiyordum ama sen haklısın. Bu tekniğe dayanan akıllı işaretçilerle çekebileceğiniz bazı eğlenceli oyunlar var. – templatetypedef
@GMan: Bu tipler topluca * akıllı işaretçiler * olarak adlandırıldığı için, templatetypedef * pointer * teriminin kullanılmasının yanlış olduğunu düşünmüyorum, sadece genel anlamda kullanıyor. –