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";
}

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top