2012-02-11 11 views
13

Ho una funzione membro statico che è per me solo zucchero sintattico e vorrei che il suo corpo appaia al posto di passare attraverso i movimenti dei parametri di passaggio. SaràÈ possibile integrare funzioni di membri statici?

inline static foo(int a) {return a & 0x00000040;} 

essere inline proprio come farebbe se fosse inline senza essere static?

+1

Come per ogni inlining, la risposta è "dipende". Cosa succede se si vuole passare un puntatore a funzione 'foo' da qualche parte? –

risposta

13

Il compilatore sceglie cosa vuole fare in modo che non possiamo dire cosa sceglierà di fare. Detto questo, la funzione static non impedirà che sia in linea; Le funzioni static sono fondamentalmente funzioni libere con uno stile di denominazione diverso e accesso ai membri privati ​​della classe.

+0

Si differenziano dalle funzioni libere per un aspetto importante: accesso ai membri privati ​​ – John

+0

@ John ah sì, questa è una differenza importante. –

+0

Non una definizione all'interno della classe implica comunque una richiesta di inline? –

0

Un metodo membro statico non ha il parametro this e pertanto può accedere solo a variabili membro statiche.

È diverso dal fatto che il metodo sia in linea o meno. Quindi i due sono indipendenti l'uno dall'altro.

Il compilatore decide se un metodo deve essere in linea o meno. L'uso della parola chiave è solo un suggerimento per il compilatore.