저번에는 클래스에 대해서 대략 개요만 짚고 넘어갔어,,
이번에는 실제 클래스의 용례를 알려줄께

#include <iostream>

using namespace std;

class Calculator
{
private:
       double result;                           //결과를 저장할 변수
public:
       Calculator();                             //생성자
       Calculator(double a);                //오버로딩된 생성자
       double addnum(double a);        //덧셈
       double subnum(double a);        //뺄셈
       double mulnum(double a);        //곱셈
       double divnum(double a);          //나눗셈
       double modnum(double a);        //나머지
       double getresult();                     //결과
};

int main()
{
        Calculator c(3.14);
        cout << c.getresult() << endl;

        cout << c.addnum(2.8) << endl;
        cout << c.getresult() << endl;

        cout << c.subnum(1.8) << endl;
        cout << c.getresult() << endl;

        cout << c.mulnum(2.3) << endl;
        cout << c.getresult() << endl;

        cout << c.divnum(2.8) << endl;
        cout << c.getresult() << endl;

        cout << c.modnum(3) << endl;
        cout << c.getresult() << endl;
        
        return 0;
}

Calculator::Calculator()                             //생성자
{
           result=0;
}
Calculator::Calculator(double a)                //오버로딩된 생성자
{
           result=a;
}
Calculator::double addnum(double a)        //덧셈
{
           result+=a;
           return result;
}
Calculator::double subnum(double a)        //뺄셈
{
           result-=a;
           return result;
}
Calculator::double mulnum(double a)        //곱셈
{
           result*=a;
           return result;
}
Calculator::double divnum(double a)          //나눗셈
{
           result/=a;
           return result;
}
Calculator::double modnum(double a)        //나머지
{
           result%=a;
           return result;
}
Calculator::double getresult()                     //결과
{
           return result;
}

간단한 계산 클래스를 만들었어,
순식간에 만들어서 오타가 있을지도 모르니 오타지적은 환영^^
일단 지금까지의 강좌를 잘 읽었다면 어렵진 않은 소스라고 생각해.
우선 맨 처음의

class Calculator

부분은 클래스를 생성하겟다는 선언부분
그 밑의
{
}
는 클래스의 몸통이 되는거지.
그다음
private:
라는것이 있는데,
여기서 ; 가 아니라 : 라는거 주의해야되.
이거는 이 밑으로 나오는것은 클래스 내부의 숨겨진(캡슐화된) 사항이니까,
외부의 참조나 호출은 금지된다는 표시야. 이 밑으로 나오는것은 c.뭐시기 로 호출이 불가능해.

그 다음 변수선언 하고,
public:
이 있는데 이거는 private랑은 반대로,
이 밑의 것들은 외부의 접근을 허용한다. 라는 표지야.
이게 없으면 class를 만들어도 소용이 없지뭐,,,
사용할것들이 없으니,,,

그다음 main함수에 들어와서 처음나오는거
Calculator c(3.14);
이거는 Calculator클래스의 object인 c를 생성하면서, 생성자 Calculator(double a)를 호출하라는거. 생성자는 좀있다가 설명할께.

그다음은 이제 만들어놓은 갖가지 메소드를 사용해보고,,,

그밑에 Calculator:: 하고 시작하는것들 있지? 이게 메소드의 몸통을 선언하는거야.
위에서 class선언때는 프로토 타입만 선언해놨잖아? 그럼 몸통을 정의 해야지.
근데 여러클래스를 한 프로그램에서 사용한다면 같은이름의 함수를 여러 클래스에서 쓸수도 있잖아? 그래서 컴파일러가 어떤함수가 어떤 클래스껀지 알수있도록 클래스이름을 써주는거야.
그다음은 함수선언과 똑같은데, 처음에 반환형에 아무것도 안써주고, 이름이 class이름이랑 같은놈이 2개 있지? 이게 생성자야.
생성자는 object가 생성될때 호출되는 함수인데, 여기서는 일반적으로 맴버변수들의 초기화등을 담당하도록 해.
하나는 생성할때 인자가 없이 Calculator a; 식으로 선언할때 호출되는거도 다른 하나는 Calculator a(1.23); 식으로 선언될때 호출되는거야. C++은 같은이름의 함수라도 인자의 종류와 갯수가 다르다면 다른 함수로 인식하기 때문에 써먹을수 있는 방법이지.
오늘은 클래스와 생성자까지 했어. 아직은 포인터에대해 배우지 않았고, 동적인 할당과 정적인 할당, 그에앞서 배열도 안배웠으니,,, 소멸자는 나중으로 넘겨놓을께,, 여기까지 모르는거는
nateon : dcmichael@nate.com
msn : dcmichael@live.co.kr
H.P. : 010-2885-4585
또는 블로그의 댓글
로 연락하면 언제든지 답변해줄테니까 당장 숙제에 관한것말 알려달라고만 하지말고 C++을 제대로 공부해보자!!

'대학생활 > C++' 카테고리의 다른 글

C++숙제,,,  (0) 2009.04.09
4주차 C++숙제가 떳습니다.  (0) 2009.04.01
3주차 C++숙제가 나왔습니다!!  (0) 2009.03.23
내맘대로 강좌 C++편 6 (함수편)  (5) 2009.03.23
내맘대로 강좌 C++편 5  (2) 2009.03.19