Ist es möglich, eine Klasse ohne deren Umsetzung zu erklären? (C ++)
-
22-08-2019 - |
Frage
weiß, dass ich die Fragen nicht eindeutig scheinen, aber ich konnte mich keinen anderen Weg, um es zu vergrößern, doch ist es möglich, so etwas zu tun:
#include<iostream>
class wsx;
class wsx
{
public:
wsx();
}
wsx::wsx()
{
std::cout<<"WSX";
}
Lösung
Ja, das ist möglich. Im Folgenden nur deklariert wsx
class wsx;
Diese Art der Erklärung wird eine Vorwärts-Erklärung genannt, weil sie gebraucht wird, wenn zwei Klassen aufeinander verweisen:
class A;
class B { A * a; };
class A { B * b; };
Einer von ihnen muss vorwärts dann deklariert werden.
Andere Tipps
Dies ist die Definition der Klasse
class wsx
{
public:
wsx();
}
Dies ist die Definition des Konstrukteurs
wsx::wsx()
{
std::cout<<"WSX";
}
Dies ist eine Vorwärts-Deklaration, die die Klasse sagt, wird irgendwo definiert werden
class wsx;
In Ihrem Beispiel
class wsx; // this is a class declaration
class wsx // this is a class definition
{
public:
wsx();
}
Also ja, durch class wsx;
verwendet, ist es möglich, eine Klasse ohne zu definieren, sie zu erklären. Eine Klassendeklaration können Sie Zeiger und Verweise auf diese Klasse deklarieren, aber nicht Instanzen der Klasse. Der Compiler muss die Klassendefinition, damit sie weiß, wie viel Speicher für eine Instanz der Klasse zuzuweisen.
Ja. Aber es ist nicht möglich, eine Klasse zu definieren, ohne sie zu erklären.
. Denn: Jede Definition ist auch eine Erklärung
Sie haben die Klasse definieren. Es hat keine Datenelemente, aber das ist nicht notwendig.
Ich bin nicht sicher, was du meinst. Der Code, den Sie eingefügt sieht richtig.