请问一个这样的问题?

xgqiang 2003-10-19 09:48:36
请看下面:
//==============header file==============
class TForm1:public TForm{
public:
__fastcall TForm1(Tcommponent Ower);
}

//=================cpp file==============
__fastcall TForm1::TForm1(TCommponet Ower):TForm(Ower)//我的问题全在这一行
{

}

我的问题是这个构造函数,cpp file中的第一个__fastcall 是调用方式,第二个TForm1::是类域,第三个TForm1(...)是构造函数及参数说明,问题在这,后面的这个:TForm(Ower)是作什么用?在此处一定要有这个吗?而我用同等的方式写了一个析构函数,为什么编译会出错呢?请看:
//==================header file==========
class TForm1:public TForm{
public:
__fastcall TForm1(TCommponent Ower);
__fastcall ~TForm1(); //析构函数
}
//=================cpp file===============
__fastcall TForm1::TForm1(TCommponent Ower):TForm(Ower){

}
__fastcall TForm1::~TForm1():TForm()
//这个后面加TForm()为什么不行,而去掉TForm就可以
{

}
...全文
24 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
GeoPhoenix 2003-10-19
  • 打赏
  • 举报
回复
析构函数不带参数,并且调用顺序是子类-父类的顺序(自动),你这么个写法本身就是画蛇添足
Kabin 2003-10-19
  • 打赏
  • 举报
回复
你的窗体Form1不是多重继承,不用加"TForm(Ower)"

"class TForm1:public TForm{.."
已经声明了 Torm1是TForm的子类了
GeoPhoenix 2003-10-19
  • 打赏
  • 举报
回复
这个问题,你的好好回去看一下,类的构造函数和析构函数的问题,尤其是子类的
aliker 2003-10-19
  • 打赏
  • 举报
回复
更正
这是因为TForm类是抽象类(含有纯虚函数的类),
aliker 2003-10-19
  • 打赏
  • 举报
回复
class TForm1:public TForm{
public:
__fastcall TForm1(Tcommponent Owner);
}
这是说TForm1继承自TForm,即TForm1是TForm的子类。
为什么非要拿个TForm1继承TForm呢?这是因为TForml类是抽象类(含有纯虚函数的类),不能生成对象(也即不能这样TForm *Form1=new TForm;)

__fastcall TForm1::TForm1(TCommponent Owner):TForm(Owner){

}
这是TForm1类的构造函数,根据C++标准,在执行子类的构造函数时,会先执行其父类的构造函数。在这里子类的构造函数用Owner参数初始化,而父类的构造函数也用Owner来初始化。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧