'de operatör,'. 'için aşırı yüklenme varsa, zorlukla karşılaştığınız zorluklar için stroustrup'tan gelen açıklamayı anlamakta zorlanıyorum. izin verildi.Dot 'aşırı yüklenemedi.' C++
Operatör:
Bjarne Stroustrup bu teklifi bakın. (nokta) prensip olarak -> için kullanılanla aynı tekniği kullanarak aşırı yüklenebilir. Bununla birlikte, böyle bir işlemin, bir nesnenin aşırı yüklenmeye yönelik olup olmadığı hakkında sorular sorabilir. veya tarafından atıfta bulunulan bir nesne. Örneğin:x.f()
yürütülürken
class Y {
public:
void f();
// ...
};
class X { // assume that you can overload .
Y* p;
Y& operator.() { return *p; }
void f();
// ...
};
void g(X& x)
{
x.f(); // X::f or Y::f or error?
}
Yukarıdaki örnekte neden herhangi bir karışıklığı olmalıdır? İşte
Y& operator.() { return *p; }
bence budur.
- operatörü() o sarih ve sezgisel
Y& operator.()(return *p; }
denilen gerektiğini dolayısıyla isnt x üzerine denir? tip Y itiraz işaret*p
döndükten sonra - ve dolayısıyla
Y::f()
nihayet çağrılmalıdır
i stroustup en açıklamasında ne Eksik (X::f()
değil)? Neden bu kadar basit değil?
"dolayısıyla" Y :: f() 'nihayet çağrılmalıdır." Fakat bu kodu okuyan birine kafa karıştırıcı değil mi? Normalde 'x.f()' 'x'''''''' olarak çağırır, ancak bu durumda olmaz. –
@ScottHunter Örnek, Stroustrup'tan geliyorsa ve kafa karışıklığını göstermesi gerekiyorsa, kafa karıştırıcı olmamalıdır :)? – AlexD
Bu [SO question] (http://stackoverflow.com/questions/520035/why-cant-you-overload-the-operator-in-c) aynı sorun hakkında konuşur. –