Study/C++

[C++] Structure

초록색이젤다 2023. 10. 6. 14:47

C++의 구조체

  • 구조체는 연관 있는 데이터를 묶을 수 있는 문법적 장치로, 하나의 구조체에는 서로 다른 종류의 데이터가 들어갈 수 있다.
struct Student
{
	string Name;
    int sNumber;
    int level;
}
  • C에서의 구조체와 C++의 구조체의 차이점은 다음과 같다.
  • 먼저 C에서는 구조체 변수 선언을 위해서는 struct 키워드를 선언하거나, 구조체 자체에 typedef를 선언하여 별칭을 정의한 뒤 선언해야한다.
// C
struct Student
{
	string Name;
    int sNumber;
    int level;
};

int main(void)
{
	struct Student zelda;
}
--------------------------
typedef struct Student
{
	string Name;
    int sNumber;
    int level;
} STU;

int main(void)
{
	STU zelda;
}
  • 하지만 C++에서는 별도의 typedef 선언 없이도 변수 선언이 가능하다.
// C++
struct Student
{
	string Name;
    int sNumber;
    int level;
};

int main(void)
{
	Student zelda;
}
  • 또 하나의 특징은 C의 경우, 구조체 내부에 함수 선언이 불가능 하지만, C++의 경우 함수 선언이 가능하다.
  • 이 함수는 외부로 뺄 수 있다.
struct Student
{
	string Name;
    int sNumber;
    int level;
    
    void sayHello()
    {
    	cout << "Hello World!";
    }
};

int main(void)
{
	Student zelda;
}
---------------------------------
struct Student
{
	string Name;
    int sNumber;
    int level;
    
    void sayHello();
};

void Student::sayHello()
{
    cout << "Hello World!";
}

int main(void)
{
	Student zelda;
}
  • 추가적으로 구조체 내부에는 enum을 선언하여 사용할 수 있다.