낙서
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 } |
||
데이터 은닉 |
불가능 |
가능 |
접근 한정자 |
불가능 |
가능 |
출처: 링크 (영어)
반응형