E 'possibile dichiarare una classe senza attuazione? (C ++)
-
22-08-2019 - |
Domanda
So che le domande sembra ambiguo, ma non riuscivo a pensare a nessun altro modo di metterla, ma, è possibile fare qualcosa di simile a questo:
#include<iostream>
class wsx;
class wsx
{
public:
wsx();
}
wsx::wsx()
{
std::cout<<"WSX";
}
Soluzione
Si, è possibile. Di seguito solo dichiara wsx
class wsx;
Questo tipo di dichiarazione viene chiamata una dichiarazione anticipata, perché è necessaria quando due classi si riferiscono l'uno all'altro:
class A;
class B { A * a; };
class A { B * b; };
Uno di loro ha bisogno di essere avanti dichiarata poi.
Altri suggerimenti
Questa è la definizione della classe
class wsx
{
public:
wsx();
}
Questa è la definizione del costruttore
wsx::wsx()
{
std::cout<<"WSX";
}
Questa è una dichiarazione anticipata che dice la classe sarà definito da qualche parte
class wsx;
Nel tuo esempio,
class wsx; // this is a class declaration
class wsx // this is a class definition
{
public:
wsx();
}
Quindi sì, utilizzando class wsx;
è possibile dichiarare una classe senza definirlo. Una dichiarazione di classe consente di dichiarare puntatori e riferimenti a quella classe, ma non istanze della classe. Il compilatore ha bisogno di definizione della classe in modo che sa la quantità di memoria da allocare per un'istanza della classe.
Sì. Ma è non possibile definire una classe senza dichiararlo.
A causa:. Ogni definizione è anche una dichiarazione
Hai fatto definire la classe. Non ha membri di dati, ma non è necessario.
Non sono sicuro di quello che vuoi dire. Il codice incollato è corretto.