VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C/C++语言编程 >
  • C++教程之什么是从基类中继承的? (What is inherite

 

什么是从基类中继承的? (What is inherited from the base class?)

理论上说,子类(drived class)继承了基类(base class)的所有成员,除了:
  • 构造函数Constructor 和析构函数destructor
  • operator=() 成员
  • friends
虽然基类的构造函数和析构函数没有被继承,但是当一个子类的object被生成或销毁的时候,其基类的默认构造函数 (即,没有任何参数的构造函数)和析构函数总是被自动调用的。
如果基类没有默认构造函数,或你希望当子类生成新的object时,基类的某个重载的构造函数被调用,你需要在子类的每一个构造函数的定义中指定它:
derived_class_name (parameters) : base_class_name (parameters) {}
例如 (注意程序中黑体的部分):
    // constructors and derivated classes
    #include <iostream.h>
    
    class mother {
      public:
        mother ()
          { cout << "mother: no parameters\n"; }
        mother (int a)
          { cout << "mother: int parameter\n"; }
    };
    
    class daughter : public mother {
      public:
        daughter (int a)
          { cout << "daughter: int parameter\n\n"; }
    };
    
    class son : public mother {
      public:
        son (int a) : mother (a)
          { cout << "son: int parameter\n\n"; }
    };
    
    int main () {
        daughter cynthia (1);
        son daniel(1);
        return 0;
    }
                          
mother: no parameters
daughter: int parameter

mother: int parameter
son: int parameter
观察当一个新的daughter object生成的时候mother的哪一个构造函数被调用了,而当新的son object生成的时候,又是哪一个被调用了。不同的构造函数被调用是因为daughter 和 son的构造函数的定义不同:
   daughter (int a)          // 没有特别制定:调用默认constructor
   son (int a) : mother (a)  // 指定了constructor: 调用被指定的构造函数
相关教程