C ++ - função de membro Const explicado com exemplos


Função de membro Const implica que a função de membro não vai alterar o estado do objeto. O membro de dados da classe é o "estado "objeto. Então, os beneficiários const função de membro que não vai alterar o valor do membro de dados até que ele volte. Vemos com um exemplo de código.

2. O código de exemplo

Olhe para o C ++ exemplo de código abaixo. Expliquei o código na etapa 3.





// TestIt.cpp: Define o ponto de entrada // Para a aplicação console. // #include "stdafx.h" #include using namespace std; Classe CRect { // exemplo 01: Private Members Privada: int m_len; int m_width; público: // Exemplo 02: Constructor CRect (L int, int W) { m_len = L; m_width = W; } // Sample 03: Os membros da dados de impressão impressão void () { cout << "Comprimento =" << m_len << "Width =" << endl << m_width; } // Exemplo 04: Função Const Unidos int getArea () { m_len ++; retornar m_width * m_len; } }; int main () { // Exemplo 05: Criar Retângulo Objeto CRect RCT (10,5); // Exemplo 06: O tamanho de impressão rct.print (); // Exemplo 07: imprimir a área do retângulo cout << "Área =" << rct.GetArea (); }

3. Explicação dos

1) Para explicar a função de membro const, você cria uma classe chamada CRect. Tem duas variáveis ​​de membros nomeados como m_len e m_width. Estas variáveis ​​associadas representam o estado da classe. Ambos estão nas variáveis ​​membro privadas. Isso significa que ele só pode ser acessado no âmbito das funções de membro da classe.

// exemplo 01: Private Members Privada: int m_len; int m_width;

2) O construtor da classe define o comprimento e largura CRect. O construtor tem o comprimento (L) e a largura (W) do rectângulo como um parâmetro. Estes parâmetros são copiados para os membros locais e m_len m_width dentro do corpo do construtor.

// Exemplo 02: Constructor CRect (L int, int W) { m_len = L; m_width = W; }

3) função de membro da impressão, o estado interno do objeto. Isto significa, pressione o comprimento e largura do objecto CRect. Note que usamos objetos iostream para imprimir os valores da consola de saída. Cout é o objeto iostream e esvazia a corda através do operador <<. O operador <> empurra a entrada do console para o programa. Veremos em algum outro cout em detalhe

// Sample 03: Os membros da dados de impressão impressão void () { cout << "Comprimento =" << m_len << "Width =" << endl << m_width; }

4) A função de membro getArea calcula a área do retângulo multiplicando seus membros internos (ou seja) m_len e m_width. De referir ainda o const no final da função do parâmetro. Este diz que o getArea função de membro é lido somente a função e não chage os membros de dados e m_width m_len em qualquer ponto do tempo.

Alterando a variável membro dentro do corpo da função será detectado pelo compilador e o compilador não irá permitir a alterar o estado do objecto dentro da função de membro constante. A imagem mostra função de membro como const diferente da função normal. A função normal pode acessar a variável membro da classe e pode substituir o valor em que o usuário variável. Mas as funções de membro const permite ler dados das variáveis ​​de membro e não permitir-me a escrever um novo valor.

// Exemplo 04: Função Const Unidos int getArea () const { retornar m_width * m_len; }

5) a voz do programa, criamos um objeto com RCT domension de 10x5. Agora, eu posso dizer que o estado do RCT o comprimento ea largura de 10 5. A impressão função de membro () chamado no objeto RCT RCT irá imprimir o estado do objeto. Finalmente nós chamamos a função de membro do getArea objeto RCT (). Note-se que a função de membro é função de membro const e garante que esta função não muda qualquer objeto RCT.




// Exemplo 05: Criar Retângulo Objeto CRect RCT (10,5); // Exemplo 06: O tamanho de impressão rct.print (); // Exemplo 07: imprimir a área do retângulo cout << "Área =" << rct.GetArea ();

A tela a seguir mostra a saída de executar o exemplo. No entanto, a intenção deste hub é explicado no vídeo.

(0)
(0)

Comentários - 0

Sem comentários

Adicionar um comentário

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caracteres restantes: 3000
captcha