Вопрос

Я знаю, что вопросы кажутся двусмысленными, но я не мог придумать другого способа задать их, но можно ли сделать что-то вроде этого:

#include<iostream>

class wsx;

class wsx
{
public:
wsx();
}

wsx::wsx()
{
std::cout<<"WSX";
}

?

Это было полезно?

Решение

Да, это возможно.Следующее просто объявляет wsx

class wsx;

Такое объявление называется предварительным объявлением, поскольку оно необходимо, когда два класса ссылаются друг на друга:

class A;
class B { A * a; };

class A { B * b; };

Один из них нужно тогда заранее объявить.

Другие советы

Это определение класса

class wsx
{
public:
wsx();
}

Это определение конструктора

wsx::wsx()
{
std::cout<<"WSX";
}

ЭТО предварительное объявление, в котором говорится, что класс БУДЕТ где-то определен.

class wsx;

В вашем примере

class wsx; // this is a class declaration

class wsx  // this is a class definition
{
public:
wsx();
}

Так что да, используя class wsx; можно объявить класс, не определяя его.Объявление класса позволяет объявлять указатели и ссылки на этот класс, но не его экземпляры.Компилятору необходимо определение класса, чтобы он знал, сколько памяти выделить для экземпляра класса.

Да.Но это нет можно определить класс, не объявляя его.

Потому что: Каждое определение также является декларацией.

Вы определили класс.У него нет элементов данных, но это не обязательно.

Я не уверен, что вы имеете в виду.Вставленный вами код выглядит правильно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top