작성
·
200
3
enum color
{
COLOR_BLACK, // 0
};
int main()
{
using namespace std;
color paint =COLOR_BLACK;
cout << paint << endl; // '0'출력
return 0;
}
위에 코드는 클래스를 사용하기전 코드입니다.
cout을 통해 출력이 잘됩니다.
아래 코드는 클래스를 사용한 코드인데
cout을 통해 출력이 안됩니다
enum class color
{
COLOR_BLACK, // 0
};
int main()
{
using namespace std;
color paint = color::COLOR_BLACK;
cout << paint << endl; // 출력이 안되고, 피연사자와 일치하는 <<이 없다고 출력됨
return 0;
}
즉 class를 사용하면 cout을 통해 출력이 안되는건지, 제가 실수하는게 있는건지가 궁금합니다
답변 1
6
아, 그러시군요! 클래스를 이용해서 만든 새로운 자료형은 cout을 통해서 출력이 안된다는 얘기시지요? 사용자 정의 자료형이라는 개념과 만나셨네요. 기본 자료형이 아닌 사용자 정의형은 사용자가 출력을 어떻게 할지도 지정해줘야 합니다. 뒤에 operator overloading 연산자 오버로딩 부분에 output operator << 오버로딩하는 방법이 나옵니다. 클래스의 멤버 변수가 기본 자료형일 경우에는 직접 출력하는 방법도 있습니다.