본문 바로가기

컴퓨터/C++

[C++] 구조체와 클레스의 차이점은 무엇일까

안녕하세요 sdk입니다


저또한 C++마스터자가아니라 공부하고있는 사람인지라 정확한 포스팅이 안될수있음을

미리 밝힙니다.









구조체란 무엇일까요

간단히 한마디로 말하자면



여러개의 데이터들을 효율적으로 사용하기위해 하나로 묶는것

을 의미합니다

C에서 엄청 중요한 위치에 차지하고있는 문법이죠


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
struct 
{
    int x;
    int y;
 }typedef name;
 
int main()
{
 name abc= {10,20};   
printf("%d,%d\n",abc.x,abc.y);
return;
}


실행결과 : 10,20

이것의 c문법에서의 구조체입니다







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
class one
{
private:
    int x;
    int y;
public:
    one(int setx, int sety) : x(setx),y(sety) {}
    int get_x() { return x; }
 
};
 
int main()
{
    one abc(10, 20);
    cout << abc.get_x() << endl;
    return 0;
}


실행결과: 10

C++에서의 클레스입니다 (상속이란거 넣지않았고 그냥 간단하게 함수와 이니셜라이져만 넣었습니다.

여기서 두개의 차이점을 말해볼까 합니다


구조체는 어디서든 접근가능하며 (선언된 함수에 제한 만약 전역일시 전역변수와 동일)

함수선언이 불가능하며(함수포인터를 이용하여 따라는 할수 있습니다)

상속이 불가능하다(가장 커다란점) 

뭐 따지고들면 여러 차이점이있겟죠

구조체의 장점이라면.. 간단한 사용법? 이정도? 일지도 모르겟네요


클레스의 장점은

상속이 가능한점과

클레스 내에서 접근제어 지시자를 통하여 정보 은닉을 할수있습니다 (안의 맴버변수접근방법을 제한하는것)

뭐 컨트롤 클레스나 기타등등 객체지향적요소들이 추가되면

장점들이 매우 많아지지요.

 

단점이라면 C보단 느린 속도가 되겟네요.

(속도차이 거의 없지만 수치로보면 C가더 빠르다고합니다)





C의 구조체를 알고

C++의 클레스를 공부 하시는 분에게 조언합니다



구조체에 기능을 많이 더한게 클레스라고 생각해보라고.




이상입니다




 



여러분들의 댓글은 큰 힘이됩니다 :)