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);
}
이렇게 해서 프로그래머는 의도에 맞게 사용자의 행동을 제어하고 조절할 수 있다.
그리고 클래스 변수는 변수라고 하지 않고 객체라고 한다.
구조체는 변수라고 하는데 구조체에는 변수의 모음집이기 때문에 변수 밖에 없고
그러나 클래스에는 변수+함수가 있어서 함수까지 접근할 수 있기 때문에 객체라고 부르는 것이 맞다.ㄸ