낙서

C와 C++에서의 구조체 차이

nodeal 2018. 1. 14. 13:41
반응형

별로 길게 이야기 할 것도 없는 주제다. 사실 인터넷 찾아보면 금방 찾을 수도 있는 내용이지만 나를 위해 표로나 정리해보고자 했다.


 

C

C++

멤버함수 선언

불가능

가능

struct MyStruct {
    void member_function(); // C는 불가능
};

구조체 내부 변수 초기화

불가능

가능

struct MyStruct {
    int variable = 0; // C는 불가능
};

초기화시 struct 키워드

필요

불필요

struct MyStruct {};

void foo() {
    struct MyStruct my_struct = ~~; // C
    MyStruct my_struct = ~~; // C++
}

정적 멤버 변수 또는 함수

불가능

가능

struct MyStruct {
    static int variable; // C는 불가능
};

빈 구조체 sizeof 연산자

0

1

struct MyStruct {};

void foo() {
    printf("%d\n", sizeof(struct MyStruct)); // C로 컴파일시 0
    std::cout << sizeof(MyStruct) << std::endl; // C++로 컴파일시 1
}

데이터 은닉

불가능

가능

접근 한정자

불가능

가능


출처: 링크 (영어)

반응형