Можно ли объявить класс, не реализуя его?(С++)
-
22-08-2019 - |
Вопрос
Я знаю, что вопросы кажутся двусмысленными, но я не мог придумать другого способа задать их, но можно ли сделать что-то вроде этого:
#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;
можно объявить класс, не определяя его.Объявление класса позволяет объявлять указатели и ссылки на этот класс, но не его экземпляры.Компилятору необходимо определение класса, чтобы он знал, сколько памяти выделить для экземпляра класса.
Да.Но это нет можно определить класс, не объявляя его.
Потому что: Каждое определение также является декларацией.
Вы определили класс.У него нет элементов данных, но это не обязательно.
Я не уверен, что вы имеете в виду.Вставленный вами код выглядит правильно.