2012-04-27 13 views

cevap

16

:

class MyClass 
{ 
    //... 
    MyClass operator* (float x); 
}; 

ilk 2 seçenek sınıf kapsamı dışında bildirimleri olarak çalışmaya:

MyClass operator* (float x, const MyClass& y) 
{ 
    //... 
} 

MyClass operator* (const MyClass& y, float x) 
{ 
    //... 
} 

ikincisi de üye fonksiyonu olabilir.

+0

olamaz İlk argümanı dolaylı olarak adlandırılan aşırı yüklenmiş bir operatör değil mi? Sonra bu ilk argüman temel bir veri tipiyse (burada), işe yarayacak mı? – vaisakh

+1

@vaisakh En az bir kullanıcı tanımlı tür sağladığınızda herhangi bir ikili operatöre aşırı yükleme yapabilirsiniz. Bu durumda, 'MyClass' kullanıcı tanımlıdır. Böylece operatör + (int, const MyClass &) 'ı tanımlayabilirsiniz, ancak 'operator + (int, int)' yi yeniden tanımlayamazsınız. –

+0

Tamam. Ben hiç böyle denemedim. Teşekkürler :) – vaisakh

İlgili konular