Funções de membro da classe embutida
Uma função definida no corpo de uma declaração de classe é uma função embutida.
Exemplo
Na seguinte declaração de classe, o construtor Account é uma função embutida. As funções de membro GetBalance, Deposit e Withdraw não são especificadas como inline mas podem ser implementadas como funções embutidas.
// Inline_Member_Functions.cpp
class Account
{
public:
Account(double initial_balance) { balance = initial_balance; }
double GetBalance();
double Deposit( double Amount );
double Withdraw( double Amount );
private:
double balance;
};
inline double Account::GetBalance()
{
return balance;
}
inline double Account::Deposit( double Amount )
{
return ( balance += Amount );
}
inline double Account::Withdraw( double Amount )
{
return ( balance -= Amount );
}
int main()
{
}
Dica
Na declaração de classe, as funções foram declaradas sem a palavra-chave inline.A palavra-chave inline pode ser especificada na declaração de classe; o resultado é o mesmo.
Uma determinada função de membro embutida deve ser declarada da mesma maneira em cada unidade de compilação. Essa restrição faz com que as funções embutidas se comportem como se fossem funções instanciadas. Além disso, deve haver exatamente uma definição de uma função embutida.
Uma função de membro de classe usa como padrão o vínculo externo a menos que uma definição dessa função contenha o especificador inline. O exemplo anterior mostra que essas funções não precisam ser declaradas explicitamente com o especificador inline; usar inline na definição de função faz com que ela seja uma função embutida. No entanto, é ilegal redeclarar uma função como inline após uma chamada a essa função.