Por que e como utilizar Classes Aninhadas em C++

🪺 Mais conhecidas em inglês como: Nested classes.


Por que e como utilizar Classes Aninhadas em C++


Em C++ uma classe pode ser declarada dentro do escopo de outra classe, essa prática é conhecida como: “classes aninhadas”.

Classes aninhadas são consideradas dentro do escopo da classe envolvente e estão disponíveis para uso dentro desse escopo. Para se referir a uma classe aninhada de um escopo diferente do seu escopo envolvente imediato, você deve usar um nome totalmente qualificado.


Exemplo básico de uso

Veja esse exemplo, onde a class B está dentro da classe A. Podemos tanto criar o objeto da classe A como também criar um objeto da classe B utilizado a resolução de escopo da classe A.

#include <iostream>

class A {
  public:
    class B {
      public:
        B(){}
        void print(){
          std::cout << "Eu sou B\n";
        }
    };
};

int main(){
  A::B b;
  b.print();
}

Os membros e funções-membro são intercambiáveis entre essas duas classes, e os mesmos podem ser sobrecarregados. Por exemplo, se tivéssemos uma função-membro de mesmo nome e tipo em A, eu poderia utilizá-la sem nenhum problema:

#include <iostream>

class A {
  public:
    void print(){
      std::cout << "Eu sou A\n";
    }
    class B {
      public:
        B(){}

        void print(){
          std::cout << "Eu sou B\n";
        }
    };
};

int main(){
  A a;
  a.print();
  A::B b;
  b.print();
}

E lógico, os privilégios de acesso também se mantém, se uma dessas funções-membro fosse private, a regra de não acesso se mantém.


Por que usar classes aninhadas?

O principal motivo de usar classes aninhadas é justamente pelo fato de ocultar dados, ou seja, sabe aquelas API’s públicas que você pode instanciar uma classe através de uma URL? Então, elas fazem uso de classes aninhadas, e lógico, com todas as medidas de proteção de dados também, além de não poluírem o namespace.


Para mais informações sobre classes aninhadas acesse:


cpp cppdaily


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!