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,构造函数,析构函数,输出...②定义公有派生类student,数据成员:num,构造函数,析构函数,输出name,sex,age,num的函数display()。③ 主函数定义并使用student 对象stu。
2:正确定义派生类的构造函数与析构函数,理解定义一个派生类对象时构造函数、析构函数的调用次序。 3:理解同名冲突的产生原因,会使用虚基类来解决第三类同名冲突问题,并理解引入虚基类后构造函数、析构函数的...
构造函数 先看看构造函数的...派生类构造函数。 析构函数 析构函数的调用顺序与构造函数的调用顺序正好相反,将上面3个点反过来用可以了,首先调用派生类的析构函数;其次再调用成员类对象的析构函数;后调
1、 形状(一) 编写C++程序完成以下功能: ...(4) 分别实现派生类构造函数、析构函数和其他方法; (5) 创建派生类的对象,观察构造函数、析构函数调用次序; (6) 不同对象计算面积。 北邮C++小学期作业
进入全屏解码显示时间需要2S以上时间,在屏幕中央显示提示:"正在读取图片,请稍侯…
类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...
类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...
派生类的构造函数是怎样的执行顺序,析构函数的执行顺序是如何实现的?什么是虚基类?它有什么作用?含有虚基类的派生类的构造函数有什么要求,什么是最远派生类,建立一个含有虚基类的派生类的对象时,为什么由最远...
类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...
Felid包含构造函数、析构函数和纯虚函数sound Cat包含构造函数、析构函数和虚函数sound Leopard包含构造函数、析构函数和虚函数sound 要求:定义一个Felid类指针,采用动态内存分配的方式建议一个Cat对象,并且...
第9章 类的构造函数、析构函数与赋值函数 69 9.1 构造函数与析构函数的起源 69 9.2 构造函数的初始化表 70 9.3 构造和析构的次序 72 9.4 示例:类String的构造函数与析构函数 72 9.5 不要轻视拷贝构造函数与赋值函数...
包含基本分数类,重载加减乘除约分同分和六目比较运算的分数类,同时包含派生整数类。
析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多态性, 引用和指针的变量的区别与共同处。VC工程的编译原理与过程,将工程中不同的类拆分到...
类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...
类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多...
2. dormitory的派生类room类,内有公有成员变量RN,构造函数、析构函数和一般函数SetRoomNum(int ), GetRoomNum()及display()函数;3.room的派生类student类,包含了私有成员变量BedNum,age,phone,另有9个一般...