`
duoerbasilu
  • 浏览: 1484660 次
文章分类
社区版块
存档分类
最新评论

派生类构造函数与析构函数的构造规则

 
阅读更多

1.派生类的构造函数可以不显示式的写出基类的构造函数。例如:

Third()
{e=0;}

此时,系统自动调用基类的无参构造函数(没有,则为默认的构造函数)。也可显示式的指出调用基类的哪一个构造函数。例如:

Third(int x,int y,int z):Second(x,y)
{
e=z;
}

2.要调用的基类构造函数的参数可在派生类的构造函数中明确给出。例如:

Third(int x,int y,int z):Second(x,y)
{
e=z;
}

也可不给出:

Second():First(1,1)
{
c=0;
d=0;
}

还可以对派生类构造函数的参数进行一些交换,再传递给要调用的基类的构造函数,例如:

Second(int x,int y):First(x+1,y+1)
{
c=x;
d=y;
}

一个完整的例子如下:

#include<iostream>
using namespace std;
class First{
public:
	First()
	{
		a=0;
		b=0;
	}
	First(int x,int y)
	{a=x;
	 b=y;
	}
	~First()
	{
		cout<<"destructing First"<<endl;
	}
	void show()
	{
     cout<<"\n a="<<a<<"\n b="<<b<<endl;
	}
private:
	int a;
	int b;
};
class Second:public First{
public:
	Second():First(1,1)
	{
		c=0;
		d=0;
	}
	Second(int x,int y):First(x+1,y+1)
	{
		c=x;
		d=y;
	}
	Second(int x,int y,int m,int n):First(m,n)
	{
		c=x;
		d=y;
	}
	~Second()
	{
		cout<<"destructing Second"<<endl;
	}
	void show()
	{
		First::show();
		cout<<"c="<<c<<"d="<<d<<endl;
	}
private:
	int c,d;

};
class Third:public Second{
public:
	Third()
	{e=0;}
	Third(int x,int y,int z):Second(x,y)
	{
         e=z;
	}
	Third(int x,int y,int z,int m,int n):Second(x,y,m,n)
	{
		e=z;
	}
	~Third()
	{
		cout<<"destructing Third"<<endl;
	}
	void show()
	{
		Second::show();
		cout<<"e="<<e<<endl;
	}
private:
	int e;
};
int main()
{
	First f;
	f.show();
	cout<<"======================"<<endl;
	Second d1;
	d1.show();
	cout<<"======================"<<endl;
	Second d2(10,20,30,40);
    d2.show();
	cout<<"====================="<<endl;
	Second d3(12,13);
	d3.show();
	cout<<"======================="<<endl;
	Third t;
	t.show();
	cout<<"======================"<<endl;
	Third t1(14,15,16);
	t1.show();
	cout<<"======================="<<endl;
	Third t2(50,60,70,80,90);
	t2.show();
	return 0;

}


分享到:
评论

相关推荐

    定义基类person,数据成员name,sex,age,构造函数,析构函数,输出name,sex,age的函数display()。②定义公有派生类student

    定义基类person,数据成员name,sex,age,构造函数,析构函数,输出...②定义公有派生类student,数据成员:num,构造函数,析构函数,输出name,sex,age,num的函数display()。③ 主函数定义并使用student 对象stu。

    类的继承与派生实验

    2:正确定义派生类的构造函数与析构函数,理解定义一个派生类对象时构造函数、析构函数的调用次序。 3:理解同名冲突的产生原因,会使用虚基类来解决第三类同名冲突问题,并理解引入虚基类后构造函数、析构函数的...

    C++构造函数和析构函数顺序

    构造函数  先看看构造函数的...派生类构造函数。  析构函数  析构函数的调用顺序与构造函数的调用顺序正好相反,将上面3个点反过来用可以了,首先调用派生类的析构函数;其次再调用成员类对象的析构函数;后调

    北邮C++小学期作业-----形状1

    1、 形状(一) 编写C++程序完成以下功能: ...(4) 分别实现派生类构造函数、析构函数和其他方法; (5) 创建派生类的对象,观察构造函数、析构函数调用次序; (6) 不同对象计算面积。 北邮C++小学期作业

    java kok 构造与析构函数

    进入全屏解码显示时间需要2S以上时间,在屏幕中央显示提示:"正在读取图片,请稍侯…

    C++经典语法与应用

    类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...

    C++经典语法与应用,类的编写与应用

    类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...

    c++ 习题 派生类和继承

    派生类的构造函数是怎样的执行顺序,析构函数的执行顺序是如何实现的?什么是虚基类?它有什么作用?含有虚基类的派生类的构造函数有什么要求,什么是最远派生类,建立一个含有虚基类的派生类的对象时,为什么由最远...

    C++经典语法掌握C++

    类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...

    是谁在叫c++运行程序.exe

    Felid包含构造函数、析构函数和纯虚函数sound Cat包含构造函数、析构函数和虚函数sound Leopard包含构造函数、析构函数和虚函数sound 要求:定义一个Felid类指针,采用动态内存分配的方式建议一个Cat对象,并且...

    高级c语言程序编程思想

    第9章 类的构造函数、析构函数与赋值函数 69 9.1 构造函数与析构函数的起源 69 9.2 构造函数的初始化表 70 9.3 构造和析构的次序 72 9.4 示例:类String的构造函数与析构函数 72 9.5 不要轻视拷贝构造函数与赋值函数...

    分数类中的操作符重载

    包含基本分数类,重载加减乘除约分同分和六目比较运算的分数类,同时包含派生整数类。

    C++经典语法与应用实例源码

     析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多态性,  引用和指针的变量的区别与共同处。VC工程的编译原理与过程,将工程中不同的类拆分到...

    c++经典语法

    类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...

    掌握C++的具体语法

    类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...

    C++课程设计 学生宿舍管理系统

    2. dormitory的派生类room类,内有公有成员变量RN,构造函数、析构函数和一般函数SetRoomNum(int ), GetRoomNum()及display()函数;3.room的派生类student类,包含了私有成员变量BedNum,age,phone,另有9个一般...

Global site tag (gtag.js) - Google Analytics