반응형

보통 클래스를 선언하고 내용을 작성할때 

 

class Car
{
public:
	int speed;
    ..
    int getSpeed()
    {
    	return speed;
    }
    ..
}

위의 형태로 speed라는 멤버변수를 선언하여주고 getSpeed라는 함수를 이용하여 speed의 값을

받아오도록 했다.

이러한 형태를 함수의 내부정의라고 한다.

 

하지만 위와 같은 경우는 함수의 코드 내용이 길어지게 되면 코드를 이해하는데 굉장히 번거로워 질 수 있다.

 

따라서 우리는 멤버함수의 외부정의를 통하여 코드를 좀 더 가독성있게 정리할 수 있다.

 

class Car
{
private:
	int speed;
    int gear;
    string color;
public:
	int getSpeed();
    void setSpeed(int s);
};

int Car::getSpeed()
{
	return speed;
}

void Car::setSpeed(int s)
{
	speed = s;
}

위와 같은 형태를 함수의 외부정의라고 한다.

 

처음에 보여줬던 코드에서 getSpeed()와 setSpeed(int s) 함수를 외부로 꺼내온 형태를 확인할 수 있다.

 

또한 클래스를 생성할 때 헤더파일을 통해 코드를 간단히 할 수 있다.

 

 

우클릭 -> 추가 -> 클래스   를 통해 클래스를 만들어 줄 수 있다.

 

다음와 같이 클래스 추가 창이 뜨게되면 Car 클래스를 생성해 주도록 한다.

이 과정을 통해 Car라는 클래스가 생성되며 Car.h 라는 헤더파일과 Car.cpp 라는 파일이 생성되게 된다.

 

여기서 Car.h의 헤더파일에는 Car 클래스를 사용하는데 필요한 Car 클래스 선언이 들어간다.

그리고 Car.cpp 에는 멤버함수들의 몸체가 들어가게 된다.

 

 

헤더파일은 간단하게 위와 같다.

멤버변수인 speed 와 gear을 선언하여 주었고 멤버함수은 getSpeed()와 setSpeed(int s)의 함수를

선언만 해주었다.

 

함수의 내용과 정의는 헤더파일 부분에 포함되어 있지 않다.

 

 

위의 사진은 Car.cpp 파일의 내용이다.

헤더파일에서의 멤버함수와 멤버변수를 사용하기에 Car.h 파일을 include 해준다.

그리고 멤버함수의 내용들을 작성해준다.

 

이렇게 함으로서 헤더파일에는 선언의 내용만을 담게되고 cpp파일에는 정의 부분을 담게 되기에

코드를 이해하는데 한결 쉬워질 수 있다.

 

그리고 main문을 위와 같이 작성하여 주면 차의 속도가 출력되는 것을 확인할 수 있다.

 

반응형

'C++' 카테고리의 다른 글

TCP/IP 통신으로 이미지 파일 전송  (0) 2020.10.12
객체지향언어  (0) 2020.01.08

+ Recent posts