소프트웨어/C++
[2003년 기말 6번] 육면체 부피 계산 - 클래스 / 생성자 / friend
카켈
2007. 2. 24. 05:51
목적
- 클래스를 이해하고 외부 함수에서 클래스가 보호하고 있는 변수를 이용할 줄 안다.
- 생성자를 이해한다.
문제
풀이
#include <iostream>
using namespace std;
class cHexahedron
{
public:
friend int i_Volumn(int, int, int);
cHexahedron() { iX = iY = iZ = 0; }
void v_GetValue();
void v_Print();
private:
int iX, iY, iZ;
};
void cHexahedron::v_GetValue()
{
int aX, aY, aZ;
aX = aY = aZ = 0;
cout << "육면체의 가로, 세로, 높이를 입력하세요 : ";
cin >> aX >> aY >> aZ;
iX = aX; iY = aY; iZ = aZ;
return;
}
void cHexahedron::v_Print()
{
cout << "육면체의 부피 : " << i_Volumn(iX, iY, iZ) << endl;
return;
}
int i_Volumn(int iX, int iY, int iZ)
{ return iX * iY * iZ; }
int main(void)
{
cHexahedron cHex[3];
for(int i = 0; i < 3; i++)
{
cout << i + 1 << "번째 ";
cHex[i].v_GetValue();
}
for(i = 0; i < 3; i++)
{
cout << i + 1 << "번째 ";
cHex[i].v_Print();
}
return 0;
}
해설
- 클래스와 함수 구조입니다.
- 맴버 함수에서는 부른 객체 자신을 가리키는 this 객체가 기본적으로 존재 합니다. 이를 생략해서 그냥 iX, iY, iZ 를 써서 쓸수 있지만 이를 표기하여 this.iX this.iY this.iZ 로 쓸수 있습니다. 맴버 함수에서는 자신이 속한 클래스 객체의 맴버 변수를 쓸수 있으므로 private 로 선언된 맴버 변수도 자유롭게 쓸수 있습니다.
- "i + 1 번째 " 만 따로 출력하여 공통된 부분의 출력부를 최소화 했습니다.
참고
- 클래스는 C++ 의 가장 두들어진 객체지향적 특징입니다. C 에서는 극히 일부 기능을 구조체에서 제공하고 있습니다. 클래스는 잠깐 공부하기 보다 아래 페이지에서 자세히 공부 하시는게 이후 C++ 의 클래스를 이해하시는데 도움이 될 것입니다.
- http://www.winapi.co.kr/clec/cpp4/cpp4.htm : winapi 에서 제공하는 C++ 문법