C++学习笔记_2:单一继承时的构造函数与析构函数

来源:互联网 发布:java潜艇大战 编辑:程序博客网 时间:2024/06/09 01:57
//继承时的构造函数: //基类的构造函数不被继承,需要在派生类中自行声明。//声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化由基类完成。//派生类与基类的构造函数://1.当基类中声明有缺省形式的构造函数或未声明构造函数时,派生类构造函数的声明中可以省略对基类构造函数的调用。//2.若基类中未声明构造函数,派生类中也可以不声明,全采用缺省形式构造函数。//3.当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,提供将参数传递给基类构造函数的途径。//单一继承时的构造函数举例: //派生类名::派生类名(基类所需的形参,本类成员所需的形参):基类名(参数)//{//        本类成员初始化赋值语句;//};//构造函数的调用次序://1.调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。//2.调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。//3.派生类的构造函数体中的内容。//继承时的析构函数//1.析构函数也不被继承,派生类自行声明。//2.声明方法与一般(无继承关系时)类的析构函数相同。//3.不需要显式地调用基类的析构函数,系统会自动隐式调用。//4.析构函数的调用次序与构造函数相反。#include <iostream.h>class B{     public:B(){b=0;cout<<"B's default constructor called."<<endl;}B(int i){b=i;cout<<"B's constructor called." <<endl;}~B(){cout<<"B's destructor called."<<endl;}void Print() const{cout<<b<<endl;}     private:     int b;};class C:public B{    public:C(){c=0;cout<<"C's default constructor called."<<endl;}C::C(int i,int j):B(i)//C(int i,int j){c=j;cout<<"C's constructor called."<<endl;}~C(){cout<<"C's destructor called."<<endl;}void Print() const{B::Print();cout<<c<<endl;}private:  int c;};int main(){C obj(5,6);obj.Print();return 0;}

原创粉丝点击