C#默认是调用基类的无参构造函数。
当创建派生类的对象时,系统将会调用基类的构造函数和派生类的构造函数,构 造函数的执行次序是:先执行基类的构造函数,再执行派生类的构造函数。如果派生类又有对象成员,则,先执行基类的构造函数,再执行成员对象类的构造函数,最后执行派生类的构造函数。
至于执行基类的什么构造函数,缺省情况下是执行基类的无参构造函数,如果要执行基类的有参构造函数,则必须在派生类构造函数的成员初始化表中指出
举个简单的例子:
#include<iostream>
using namespace std;
class Point { //定义点的类
public:
Point(double x0,double y0) {x=x0;y=y0;}
void showpoint() {cout<<x<<" "<<y<<endl;}
private:
double x, y;
};
class Circle : public Point{ //派生类继承点类,多加了半径的数据成员
public:
Circle(double x0,double y0,double radius):Point(x0,y0),r(radius){} //派生类构造函数定义
void diaplay() { showpoint(); cout<<r<<endl;}
private:
double r;
};
int main()
{
Circle c=new Circle(1,1,2); //初始化派生类对象c
c->diaplay();
delete c;
system("pause");
return 0;
}
输出:
1 1
2
因为构造函数和析构函数不能继承,所以派生类的构造函数方式为:
派生类类名(派生类数据成员参数列表):基类类名(基类参数列表),派生类新增数据成员(参数列表){}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)