클래스를 구현하지 않고 선언 할 수 있습니까? (C ++)
-
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;
클래스를 정의하지 않고 선언 할 수 있습니다. 클래스 선언을 사용하면 해당 수업에 대한 포인터와 참조를 선언 할 수 있지만 수업의 경우는 아닙니다. 컴파일러는 클래스 정의가 필요하므로 클래스 인스턴스에 얼마나 많은 메모리를 할당할지 알 수 있습니다.
예. 하지만 그것은 ~ 아니다 클래스를 선언하지 않고 정의 할 수 있습니다.
왜냐하면: 모든 정의는 또한 선언입니다.
당신은 수업을 정의했습니다. 데이터 구성원은 없지만 필요하지 않습니다.
무슨 말인지 잘 모르겠습니다. 붙여 넣은 코드가 정확해 보입니다.
제휴하지 않습니다 StackOverflow