É possível declarar uma classe sem implementar isso? (C ++)
-
22-08-2019 - |
Pergunta
Eu sei as perguntas parece ambígua, mas eu não conseguia pensar em outra maneira de colocá-lo, mas, é possível fazer algo como isto:
#include<iostream>
class wsx;
class wsx
{
public:
wsx();
}
wsx::wsx()
{
std::cout<<"WSX";
}
?
Solução
Sim, isso é possível. A seguir apenas declara wsx
class wsx;
Esse tipo de declaração é chamado uma declaração para a frente, porque é necessário quando duas classes referem-se uns aos outros:
class A;
class B { A * a; };
class A { B * b; };
Um deles tem de ser para a frente declarou então.
Outras dicas
Esta é a definição da classe
class wsx
{
public:
wsx();
}
Esta é a definição do construtor
wsx::wsx()
{
std::cout<<"WSX";
}
Esta é uma declaração para a frente que diz a classe será definido em algum lugar
class wsx;
No seu exemplo,
class wsx; // this is a class declaration
class wsx // this is a class definition
{
public:
wsx();
}
Então, sim, usando class wsx;
é possível declarar uma classe sem defini-la. A declaração de classe permite declarar ponteiros e referências a essa classe, mas não as instâncias da classe. O compilador precisa a definição de classe para que ele saiba o quanto de memória para alocar para uma instância da classe.
Sim. Mas é não possível definir uma classe sem declará-lo.
Por causa:. Cada definição é também uma declaração
Você fez definir a classe. Ele não tem membros de dados, mas isso não é necessário.
Eu não tenho certeza que você quer dizer. O código que você colou parece correto.