본문 바로가기
C++

C++ 클래스 멤버 함수 정의하기

by 여름코딩 2023. 4. 26.
반응형

안녕하세요 판타지코딩입니다!

 

저번 시간까지는 C++의 클래스를 구현하고, 객체를 생성한 뒤에 멤버 변수와 멤버 함수를 호출하는 방법을 알아보았습니다. 오늘은 클래스 내에서는 함수만 정의하고, 클래스 구현부 밖에서 함수 내의 코드를 구현하는 방법에 대해서 알아보겠습니다.

 

클래스 멤버 함수 정의

 

1. 클래스 생성

클래스 내의 멤버 함수를 정의하기 위해 기본적인 클래스 형태를 코드로 구현해 보겠습니다.

 

class homework{
public:
    int page;
    int subject;
    void checkHomework(int p, int s);
};

 

homework 클래스를 생성해 보았습니다.

 

접근제어지시자가 public으로 되어있기 때문에 클래스의 멤버 변수와 멤버 함수에 외부에서 얼마든지 접근할 수 있습니다.

 

int page;
int subject;

 

먼저 멤버 변수인 page와 subject입니다. int형으로 생성하여 숙제를 완료한 페이지 수와 완료한 과목 수를 저장하도록 했습니다.

 

void checkHomework(int p, int s);

 

멤버 함수인 checkHomework는 숙제를 얼마나 했는지 출력하는 함수입니다. void형으로 작성하였고, 인수로 int형 변수 p와 s를 받아 데이터를 출력합니다.

 

그런데 checkHomework의 코드가 구현되어 있지 않습니다. 그 이유는 클래스 구현부 밖에서 코드의 내용을 작성해 줄 것이기 때문입니다. 그럼 함수 구현 방법을 알아보겠습니다.

 

 

2. 클래스 멤버 함수 구현하기

클래스의 내부에서 함수를 구현할 때에는 일반 함수를 구현하는 것처럼 코드를 작성하면 되지만, 클래스 밖에서 작성할 때에는 적어도 어느 클래스의 함수인지 구분하는 코드가 필요할 것입니다. 그래서 클래스 구현부 밖에서 함수를 정의할 때에는 '클래스 이름::함수 이름' 형태로 구현합니다.

 

void homework::checkHomework(int p, int s)  // 반환형 클래스이름::함수이름
{
    cout << p << "페이지 완료" << endl;
    cout << s << "과목 완료" << endl;
}

 

void형 함수임을 표현하기 위해 가장 앞에 반환형은 그대로 작성하고, 클래스 이름::함수 이름 형태로 코드를 작성했습니다. 이렇게 작성함으로써 homework클래스의 멤버 함수인 checkHomework 함수다 라는 것을 명시할 수 있습니다.

 

 

3. 함수 실행하기

함수 호출을 위해서는 객체를 생성해야 한다고 했습니다. 위에서 정의한 함수를 호출하는 코드를 작성해 보겠습니다.

 

int main()
{
    homework s;  // homework 객체 s 생성
    
    s.page = 10;
    s.subject = 3;
    
    s.checkHomework(s.page, s.subject);
    
    return 0;
}

 

homework 클래스의 객체 s를 생성했습니다. 객체 s를 통해서 멤버 변수 page와 subject를 호출해서 각각 10과 3을 저장했습니다. 그리고 이 값을 활용하여 checkHomework 함수를 호출해 인수로 전달하여 코드를 실행합니다.

 

10페이지 완료
3과목 완료

 

코드 실행 결과 위와 같이 출력됩니다. 객체 s를 통해 호출한 page에는 10을 저장했고, subject에는 3을 저장했습니다. 이 값을 checkHomework 함수를 호출하면서 인수로 전달하면 위와 같이 코드가 실행됩니다.

 

그럼 오늘은 클래스를 정의하고, 멤버 함수를 구현하는 방법에 대해서 알아보았습니다.

 

감사합니다!

반응형