소프트웨어

[c++] 상속이란 무엇인지는 아는데, 어떻게 쓰는 것인가?

개발자_이훈규 2014. 2. 13. 17:27

1.

딱 상속하면 될것 같은 구조가 있는데, 내가 상속을 모른다.. 대략적인것 뿐 몰라서

c++에서 사용하는 방법을 익힌다.



2.

여기에 소스가 있다. ( http://blog.naver.com/sealclear?Redirect=Log&logNo=20187633452 )

한번 실험을 해보자.

#include <iostream>                    

                                                                                

using namespace std;                                                            

                                                                                

class account                                                                   

{                                                                               

     int acc_num;                                                               

      int balance;                                                              

       char name[20];                                                           

    public :                                                                    

        account(int _acc_num, int _balance, char * _name) {                     

              acc_num = _acc_num;                                               

                balance = _balance;                                             

                  strcpy(name, _name);                                          

                   }                                                            

                                                                                

         void showdata() {                                                      

               cout << "계좌 : " << acc_num << endl;                            

                 cout << "잔액 : " << balance << endl;                          

                   cout << "이름 : " << name << endl;                           

                    }                                                           

};                                                                              

                                                                                

                                                                                

class laccount : public account //account 상속                                  

{                                                                               

     int credit;                                                                

      int credit_rate;                                                          

    public :                                                                    

       laccount(int an, int b, char * n, int c, double cr) : account(an, b, n) //생성자는 상속 안됨

                                                              {                 

                                                                    credit = c; 

                                                                      credit_rate = cr;

                                                                       }        

                                                                                

        void showdata() {                                                       

              account::showdata();                                              

                cout << "한도 : " << credit << endl;                            

                  cout << "신용도 : " << credit_rate << endl;                   

                   }                                                            

};                                                                              

                                                                                

                                                                                

int main()                                                                      

{                                                                               

     laccount acc1(100, 5000, "김삼순", 2000, 1.0);                             

      acc1.showdata();                                                          

}                                     



3. 

위의 소스에서 account에 함수중에 public을 private로 하면 에러가 뜬다.

그럼 protected로 해보자. 이건 된다. 옥히.



4.

이제 변수를 한번 살펴보자.

상속이 될 클래스에 이것 저것 넣은 후 생성자에서 출력하는걸 해봤는데 되더라.

내가 이상하던 모양과 동일하다.


추가적으로 예측하기론 '   :   ' 이 모양은 상속되는 클래스를 호출하는 것이다.

그리고 클래스 이름을 적고 :: 을 붙인 후에 사용하면 된다.