2010-10-20 24 views
7

Sınıf içinde bir üye işlevi tanımlanmışsa, bu satır içi bir işlevdir. Örneğin.Sınıf içinde otomatik olarak tanımlanan bir arkadaş fonksiyonu var mı?

struct X 
{ 
    void mem_f() {} //mem_f is inline 
}; 

Sorum sınıf içinde tanımlanmış bir Nonmember arkadaşı işlevi otomatik satır içi de olup olmadığıdır.

E.g.

struct Y 
{ 
    friend void friend_f() {} //is friend_f inline? 
}; 

Standarttan ilgili bir alıntı/paragraph_no çok hoş olurdu. Teşekkürler.

cevap

13

Evet, öyle. §11.4/5:

sadece ise sınıf yerel olmayan bir sınıfı (9.8), işlev adı niteliksiz olduğu takdirde bir fonksiyon, bir sınıfın bir arkadaşı bildiriminde tanımlanabilir ve işlev ad alanı kapsamına sahiptir. Böyle bir işlev dolaylı olarak satır içidir. 'da tanımlanan bir arkadaş işlevi, tanımlandığı sınıfın (sözdiziminde) kapsamındadır. sınıfının dışında tanımlanan bir arkadaş işlevi (3.4.1) değil. Bu inline olması gerekir, böylece

sınıfı tanımı bir başlık dosyasında muhtemelen olduğu

, fonksiyon, çoklu-tanımlanacaktır.

İlgili konular