O Visual C++ Classes no Designer de Classe
O Designer de Classe oferece suporte a classes C++ e visualiza classes C++ nativo da mesma forma sistema autônomo sistema autônomo formas de classe de Visual Basic e Visual translation from VPE for Csharp, exceto que classes C++ podem ter várias relações de herança.Você pode expandir a forma de classe para mostrar mais campos e métodos na classe ou recolher para economizar espaço.
Observação: |
---|
O Designer de Classe não oferece suporte para uniões (um tipo especial de classe em que a memória alocada é apenas a quantidade necessária para maior membro de dados a união). |
Herança simples
Quando você arrastar mais de uma classe em um diagrama de classes e as classes têm uma relação de herança de classe, uma seta conecta-os.Os pontos de direção na direção da classe base.Por exemplo, quando as classes a seguir são exibidas em um diagrama de classes, uma seta conecta, apontando de B para A:
class A {};
class B : A {};
Você pode também arrastar única classe B para o diagrama de classes, clicar com o botão direito do mouse na forma de classe b e, em seguida, clique em Exibir classes base.Isto exibe sua classe base: .
Vários herança
O Designer de Classe oferece suporte a visualização de relacionamentos de herança de classe de várias.Herança múltipla é usado quando uma classe derivada tem atributos de mais de uma classe base.A seguir é um exemplo de herança múltipla:
class Bird {};
class Swimmer {};
class Penguin : public Bird, public Swimmer {};
Quando você arrastar mais de uma classe para o diagrama de classes e as classes têm uma relação de herança de classe múltiplo, uma seta conecta-os.Os pontos de direção na direção das classes base.
Clicando com o botão direito do mouse em uma forma de classe e, em seguida, clique em Exibir classes base exibe as classes base para a classe selecionada.
Observação: |
---|
O Mostrar classes derivadasNão há suporte para o comando para código C++.Você pode exibir as classes derivadas, indo para Modo de Exibição de Classe, expandindo o nó de tipo, expandindo o Tipos derivadossubpasta e arrastar esses tipos de diagrama de classes. |
Para obter mais informações sobre herança de classe múltiplos, consulte Múltiplo Inheritance e Múltiplo Classes Base.
Classes abstratas
O Designer de Classe oferece suporte a classes abstratas (também chamados de "classes base abstratas").São as classes que você instancia nunca, mas do qual você pode derivar outras classes.Usando um exemplo de "Herança múltipla", anteriormente neste documento, você pode instanciar oBird CLsistema autônomos sistema autônomo objetos individuais sistema autônomo segue:
int main()
{
Bird sparrow;
Bird crow;
Bird eagle;
}
No entanto, você talvez não pretende instanciar o Swimmer classe sistema autônomo objetos individuais. Poderá pretender apenas derivado dele, por exemplo, outros tipos de classes animaisPenguin, Whale, e Fish. Nesse caso, você deve declarar o Swimmer classe sistema autônomo uma classe base abstrata.
Para declarar uma classe sistema autônomo abstrata, você pode usar o abstract palavra-chave. sistema autônomo membros marcados sistema autônomo abstrato ou incluída em uma classe abstrata, são virtual e devem ser implementados pelas classes que derivam da classe abstrata.
class Swimmer abstract
{
virtual void swim();
void dive();
};
Também é possível declarar uma classe sistema autônomo abstrata, incluindo pelo menos uma função essencialmente virtual:
class Swimmer
{
virtual void swim() = 0;
void dive();
};
Quando você exibe essas declarações em um diagrama de classes, o nome de classe Swimmer e sua função virtual pura swim estão em exibidos em itálico na forma de uma classe abstrata, juntamente com a notação Classe abstrata.Observe que a forma de tipo de classe abstrata é o mesmo que uma classe normal, exceto pelo fato de que sua borda é uma linha pontilhada.
Uma classe derivada de uma classe base abstrata deve substituir cada função essencialmente virtual na classe base ou a classe derivada não pode ser instanciada.Isso, por exemplo, se você derivar um Fish classe das Swimmer classe, Fish deve substituir o swim método:
class Fish : public Swimmer
{
void swim(int speed);
};
int main()
{
Fish guppy;
}
Quando você exibe esse código em um diagrama de classes, o Designer de Classe desenha uma linha de herança da Fish para Swimmer.
anônimo Classes
O Designer de Classe oferece suporte a classes anônimas.anônimo tipos de classe são declarados sem um identificador de classes.Eles não podem ter um construtor ou destrutor, não podem ser passados sistema autônomo argumentos para funções e não podem ser retornados sistema autônomo valores de retorno de funções.Você pode usar um anônimo classe para substituir um nome de classe com um nome de typedef, sistema autônomo no exemplo a seguir:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Estruturas também podem ser anônimo.classee Designer exibe anônimo classees e estruturas o mesmo ao exibir o respectivo tipo.Embora você possa declarar e exibir anônimo classees e estruturas, Designer de Classe não usará o nome de marca que você especificar.Ele usará o nome que Modo de Exibição de classee gera.A classe ou estrutura aparece no modo de exibição de classe e Designer de Classe sistema autônomo um elemento chamado __unnamed.
Para obter mais informações sobre classes anônimas, consulte Anonymous Tipos Classe.
Classes de modelo
O Designer de Classe oferece suporte a visualização de classes de modelo.Dá suporte a declarações aninhadas.A tabela a seguir mostra algumas declarações típicas.
Elemento de código |
Modo de exibição do designer da classe |
---|---|
template <class T> class A {}; |
A<T> Classe de modelo |
template <class T, class U> class A {}; |
A<T, U> Classe de modelo |
template <class T, int i> class A {}; |
A<T, i> Classe de modelo |
template <class T, template <class K> class U> class A {}; |
A<T, U> Classe de modelo |
A tabela a seguir mostra alguns exemplos de especialização parcial.
Elemento de código |
Modo de exibição do designer da classe |
---|---|
template<class T, class U> class A {}; |
A<T, U> Classe de modelo |
template<class T> class A<T, T> {}; |
A<T, T> Classe de modelo |
template <class T> class A<T, int> {}; |
A<T, int> Classe de modelo |
template <class T1, class T2> class A<T1*, T2*> {}; |
A<T1*, T2*> Classe de modelo |
A tabela a seguir mostra alguns exemplos de herança na especialização parcial.
Elemento de código |
Modo de exibição do designer da classe |
---|---|
template <class T, class U> class A {}; template <class TC> class A<T, int> {}; class B : A<int, float> {}; class C : A<int, int> {}; |
A<T, U> Classe de modelo B Classe (pontos de classe) C Classe (pontos de classe) |
A tabela a seguir mostra alguns exemplos de especialização parcial funções do modelo.
Elemento de código |
Modo de exibição do designer da classe |
---|---|
class A { template <class T, class U> void func(T a, U b); template <class T> void func(T a, int b); }; |
A func < T, U > (+ 1 sobrecarga) |
template <class T1> class A { template <class T2> class B {}; }; template<> template<> class A<type>::B<type> {}; |
A<T1> Classe de modelo B<T2> Classe de modelo (B está contido dentro de uma classe de Tipos aninhados) |
template <class T> class C {}; class A : C<int> {}; |
A Classe -> <int>C C<T> Classe de modelo |
A tabela a seguir mostra alguns exemplos de modelo de herança.
Elemento de código |
Modo de exibição do designer da classe |
---|---|
template <class T> class C {}; template<> class C<int> { class B {}; } class A : C<int>::B {}; |
A Classe -> B C<int> Classe (B está contido dentro de classe C em Tipos aninhados) C<T> Classe de modelo |
A tabela a seguir mostra alguns exemplos de conexão canônico classe especializados.
Elemento de código |
Modo de exibição do designer da classe |
---|---|
template <class T> class C {}; template<> class C<int> {}; class A : C<int> {}; class D : C<float> {}; |
A Classe -> <int>C C<int> Classe C<T> Classe de modelo D Classe <float>-> < Float > C |
class B { template <class T> T min (const T &a, const T &b); }; |
B min <t> |
Consulte também
Conceitos
Trabalhando com o Visual C++ Code no Designer de Classe
Referência
Classes, Structures, and Uniões