Funções de membro especiais (C++)
O C++ define vários tipos de funções que podem ser declaradas somente como membros da classe — essas são chamadas de “funções de membro especiais”. Essas funções afetam a maneira como os objetos de uma classe específica são criados, destruídos, copiados e convertidos em outros tipos de objetos. Outra propriedade importante de muitas dessas funções é que podem ser chamados implicitamente (pelo compilador).
As funções de membro especiais descritas nesta seção são as seguintes:
Construtores. Habilitam a inicialização automática de objetos.
Destruidores. Fazem a limpeza depois que os objetos são destruídos explicitamente ou implicitamente.
Funções de conversão. Conversão entre tipos de classe e outros tipos.
Função do operador new. Aloca dinamicamente o armazenamento.
Função do operador delete. Libera o armazenamento alocado usando o operador new.
Operador de atribuição (operator=). Usado quando ocorre uma atribuição.
Os itens na lista acima podem ser definidos pelo usuário para cada classe.
As funções de membro especiais obedecem às mesmas regras de acesso que outras funções de membro. As regras de acesso são descritas em Controle de acesso de membros. A tabela a seguir resume como as funções de membro e friend se comportam.
Resumo do comportamento da função
Tipo de função |
A função é herdada da classe base? |
A função pode ser virtual? |
A função pode retornar um valor? |
A função é um membro ou friend? |
O compilador produzirá a função se o usuário não o fizer? |
---|---|---|---|---|---|
Construtor |
Não |
Não |
Não |
Membro |
Sim |
Construtor de cópia |
Não |
Não |
Não |
Membro |
Sim |
Destruidor |
Não |
Sim |
Não |
Membro |
Sim |
Conversão |
Sim |
Sim |
Não |
Membro |
Não |
Atribuição (operator=) |
Não |
Sim |
Sim |
Membro |
Sim |
new |
Sim |
Não |
void* |
Membro estático |
Não |
excluir |
Sim |
Não |
void |
Membro estático |
Não |
Outras funções de membro |
Sim |
Sim |
Sim |
Membro |
Não |
Funções friend |
Não |
Não |
Sim |
Friend |
Não |