c++에서 구조체

조회수 610회

c++ 구조체에서 typedef를 사용하는 것이 더 일반적인가요? 아니면 잘 사용하지 않나요??

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • C언어에서 구조체를 사용할 때는 아래 처럼 struct를 이름 앞에 넣어 줘야합니다.

    struct A {};
    struct A a;
    

    매번 struct를 사용하기에 번거롭기에 전방 선언을 사용하지 않을 경우 아래 처럼 typedef를 사용합니다.

    typedef struct {} A;
    A a;
    

    반면 C++서는 구조체를 사용하여도 struct을 사용할 필요가 없습니다. struct를 쓰나 쓰지 않으나 C++에서는 동일하기에 구지 typedef로 구조체 이름을 제 지정해줄 필요가 없습니다.

    struct A {};
    A a;
    

    더욱이 tyepdef로 정의된 이름은 전방 선언을 할 수 없으니, typedef를 이용하여 얻는 이득이 없습니다. 따라서 typedef보단 struct만으로 구조체를 선언하는 것이 주로 사용되겠지요?

    단, C언어와의 호환성을 위할 때는 typedef를 사용하기는 합니다. 예를 들어 아래와 같은 C++ 코드가 있습니다.

    struct A {};
    void func(A a);
    

    이 경우 C++에서는 사용할 수 있지만 C의 경우 A앞에 struct가 없기 때문에 컴파일 오류가 발생합니다.

    만약 아래처럼 C++코드가 작성되어 있다면 이는 C에서도 사용가능하고 C++에서도 사용 가능하게 됩니다.

    typedef struct {} A;
    void func(A a);
    

    C++에서 작성한 코드가 C와 호환되야 한다면 typedef를 사용하겠지만, 일반 적으로 struct 만으로 구조체를 정의합니다.

  • 사람마다 다릅니다.

    #include <iostream>
    
    int main()
    {
        typedef struct cStruct
        {
            //  Somthing..
            float af;
            short bs;
        }*pStruct;
    
        pStruct pTest = new cStruct();
    
        pTest->af = 5.0f;
    
        delete pTest;
        pTest = nullptr;
    
        system("pause");
        return 1;
    }
    

    저는 이럴때 사용하기도 합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)