C++프로그래밍

2013.11.20 _ 상속 예제 연습

성엽이 2013. 11. 20. 11:39

● 기반클래스와 파생클래스의 생성자와 호출자                                                                                                            


생성자()

:(const)내부변수초기화    // const(상수) 값을 초기화 시켜줄수 있다.

{

변수정의

}


 상속 예제 소스 

#include <iostream>

using  namespace  std;

class smart
{
  public:
    const int A;
    const int B;
    smart()
    :A(100),B(200)  // int A = 100 , int A(100) 같은 문법
    {
      cout << A << endl;
      cout << B << endl;      
    }
};

class smart1
{
  public:
    smart1(int B)
    {
      A = B;
    }
  private:
    int A;    
};

class smart2 : public smart1
{
  public:
    smart2()  // smart1의 디폴트 생성자 호출하기 때문에 에러가 난다.
    :smart1(100)  // 그러므로 수동으로 인자가 하나인 생성자를 적어주어야 에러가 안난다.
    {
      
    }
  private:
};

int main()
{
  //smart a;

  // 디폴트 생성자를 호출해야하는데 생성자가 인자가 하나 있는 생성자를 호출하므로 에러가 난다.
  //smart1 obj1;
  
  smart1 obj1(100);

  return 0;
}


파생클래스에서 기반클래스 생성자 호출                                                                                                                   


 파생클래스 생성자( 매개변수, ... )

: 기반클래스 생성자( 매개변수, ... ) // 기반클래스 생성자를 호출, 선별해서 처리가 가능하므로 효율적이다

{

        나머지 파생클래스 생성자 정의

}

 Student:: Student(const string name, const string addr, const string tel, 

              const double kor, const double mus, const double art)

:Person(name, addr, tel)    // 기법중 하나로 기반생성자에게 초기화를 처리하게끔 한다. 많이 쓰임
{
  //score[0] = kor;
  //score[1] = mus;
  //score[2] = art;
  SetScore(kor,mus,art);
}


                  소스                     

131120_Src_11-22.h


131120_Src_11-23.cpp


131120_Src_11-23.exe


131120_Src_main_11-24.cpp


data.txt