2013-08-19 31 views
24

Sınıfın kurucusunu arkadaş olarak ilan edebilir miyiz? Bence öyle olamaz. Ama olabileceği bir yer okudum ama yapamadım. Eğer evet ise, lütfen bir örnek kod sağlayabilirsiniz.Bir kurucu işlevi C++ 'da bir arkadaş olabilir mi?

+0

Neden bütün bir sınıf arkadaşını bunun yerine ilan etmiyorsun? – wilx

+0

kodunuzu gönderin. –

+1

@KarolyHorvath: Bu genel olarak yararlıdır, ancak burada ne gösterirdiniz? 'arkadaş MSalters

cevap

30

Evet çalıştırılabilir: bir arkadaşı bildirimi bir aşırı ad veya operatöre işaret ettiğinde

class Y 
{ 
public: 
    Y(); 
}; 
class X 
{ 
private: 
    void foo() {} 
    friend Y::Y(); 
}; 
Y::Y() 
{ 
    X x; x.foo(); 
} 

olarak başına 11.3 Arkadaş [class.friend]

5), tek işlevi belirtilen parametre türleri tarafından bir arkadaş olur.

(vurgu benim: sınıf X bir elemanı işlevi

[

class Y { 
friend char* X::foo(int); 
friend X::X(char); // constructors can be friends 
friend X::~X(); // destructors can be friends 
}; 

ucuna bağlı bir vaziyette, örneğin, Örnek] Bir sınıf Y bir arkadaş olabilir

+2

+1, örneği standarttan dışarı atmak için +1 – SteveLove

+0

bu geçerli 'sınıfına uygundur Y { friend: friend Y (int); } ' Evet ise Y (int) 'yi nasıl tanımlarsınız? – Shreyas

+3

@Shreyas bu mantıklı gelmeyecek, neden bir sınıf (veya üye) kendi başına bir arkadaş olur? –

İlgili konular