카테고리 없음

구조체와 클래스의 다른점

dawonworld 2023. 5. 17. 12:20

C++에는 구조체와 클래스 둘다 있다는 특징이 있는데

그러면 두 자료형의 다른점은 무엇인가?

가장 큰 차이점은 구조체는 여러개의 변수를 묶어놓은 틀이고

클래스는 여러개의 데이터(변수)들과 그 데이터(변수)들을 조작할 수 있는 함수들을 하나의 단위로 묶는 틀이라는 것이다.

 

객체지향 프로그래밍의 대표적인 특징은 다음과 같다.

- 데이터 캡슐화 == 정보은닉

- 상속

- 다형성

 

예를 들어 Point의 x, y 좌표 값이 1에서 10만 가능하도록 프로그래머는 설정했는데

이것을 명시적으로 프로그래밍 하지 않으면 컴파일러는 알수가 없어 

실제 사용자가 이 프로그램을 사용했을때 10 이상의 숫자를 쓰게되도 오류가 발생하지 않는다.

 

그래서 클래스에 변수를 집어넣고 그 변수에 대한 제약조건을 거는 함수도 프로그래밍 하여 

프로그램의 완성도를 높일 수 있다.

 

#include<iostream> 
using namespace std;

class CPoint 
{ 
private:
    int x; 
    int y;

public:
    void VerifyX(int a) {
        if(a < 1 || a > 10)
        	cout<< "x값 무효!"<< endl;
        else
        	x = a;
    } 
};

void main(void)
{
    CPoint p1;
    p1.VerifyX(100); 
}

이렇게 해서 프로그래머는 의도에 맞게 사용자의 행동을 제어하고 조절할 수 있다.

 

그리고 클래스 변수는 변수라고 하지 않고 객체라고 한다.

구조체는 변수라고 하는데 구조체에는 변수의 모음집이기 때문에 변수 밖에 없고

그러나 클래스에는 변수+함수가 있어서 함수까지 접근할 수 있기 때문에 객체라고 부르는 것이 맞다.ㄸ