본문 바로가기
C++/구조체

[C++] 구조체 안에 함수 정의하기

by bigpicture 2022. 8. 18.
반응형

구조체 만들기

예제로 사용할 구조체를 하나 만들어봅시다. 헬스클럽 회원 구조체입니다. 회원 한명의 구조체 변수도 선언해주었습니다. 

 

#include <iostream>

using namespace std;

struct person
{
    char name[20];
    char sex;
    int age;
    char job[20];
    float height;
    float weight;
};

    
int main()
{
person id1={"김지영",'F',23,"학생",164,56};
}

 

구조체 안에 함수 정의하기

구조체 안에 함수를 하나 추가할 것입니다. 체질량지수(BMI) 를 계산하는 함수입니다. 체질량지수는 자신의 몸무게(kg)를 키의 제곱(m)으로 나눈 값입니다. 구조체 안에 함수를 선언하면 아래와 같습니다. 코드에서 구조체 부분만 적었습니다. 

 

struct person
{
    char name[20];
    char sex;
    int age;
    char job[20];
    float height;
    float weight;
    
    float BMI(){
        float bmi=weight/((height*0.01)*(height*0.01));
        return bmi;
    }
    
};

 

구조체 안에 선언된 변수들을 이용하여 함수를 정의하였습니다. 위에서 추가한 회원의 성별과 BMI를 출력해봅시다. 

 

int main()
{
person id1={"김지영",'F',23,"학생",164,56};

cout<<id1.sex<<endl;
cout<<id1.BMI()<<endl;
}

 

BMI를 계산하려면 구조체 안에 정의한 BMI 함수를 사용해야합니다. 함수를 사용하는 형식은 구조체 원소에 접근하는 방식과 같습니다. 구조체이름.함수이름 형식으로 함수에 접근합니다. 전체 코드와 출력결과는 아래와 같습니다. 

 

#include <iostream>

using namespace std;

struct person
{
    char name[20];
    char sex;
    int age;
    char job[20];
    float height;
    float weight;
    
    float BMI(){
        float bmi=weight/((height*0.01)*(height*0.01));
        
        return bmi;
    }
    
};

    
int main()
{
person id1={"김지영",'F',23,"학생",164,56};


cout<<id1.sex<<endl;
cout<<id1.BMI()<<endl;

}

//출력값
//F
//20.8209

 

 

함수 내용을 구조체 밖으로 꺼내기

구조체 안에 정의된 함수가 많아지면 가독성이 떨어집니다. 구조체 안에 함수의 이름만 선언하고 내용은 밖으로 꺼낼 수 있습니다. 위 예시에 적용하면 아래와 같습니다. 

 

struct person
{
    char name[20];
    char sex;
    int age;
    char job[20];
    float height;
    float weight;
    
    float BMI();
    
};

float person::BMI()
{
    float bmi=weight/((height*0.01)*(height*0.01));
    
    return bmi;
}

 

person::BMI( ) 는 person 구조체 안에 정의된 함수 BMI 라는 뜻입니다. 

 

 

구조체 안에 정의된 함수는 인라인함수

구조체 안에 정의된 함수는 인라인함수입니다. 인라인이라고 명시하지 않아도 인라인으로 인식됩니다. 반면 함수 이름만 구조체 안에 정의하고, 내용을 밖에 정의할 경우 인라인함수가 아니게 됩니다. 

반응형

'C++ > 구조체' 카테고리의 다른 글

[C++] 구조체 배열이란 무엇인가  (0) 2022.08.17
[C++] 구조체란 무엇인가  (0) 2022.08.16

댓글