#include <iostream>
using namespace std;
class ta
{
public:
ta()
{
cout<<"ta create"<<endl;
}
virtual void fun(void)
{
cout<<"ta"<<endl;
}
virtual ~ ta()
{
cout<<"ta die"<<endl;
}
protected:
private:
};
class tb :public ta
{
public:
tb()
{
cout<<"tb create"<<endl;
}
virtual void fun(void)
{
cout<<"tb"<<endl;
}
virtual ~tb()
{
cout<<"tb die"<<endl;
}
protected:
private:
};
int main(void)
{
ta *a = new tb;
//tb b;
//a = &b;
//a->fun();
delete a;
return 0;
}
DELPHI代码
type
Ta = class
public
constructor create();
procedure Test; virtual;
destructor Destroy; override;
end;
Tb = class(Ta)
constructor create();
procedure Test; override;
destructor Destroy; override;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I: Ta;
J: Tb;
begin
I := Tb.create;
//I := J;
//I.Test;
I.Free;
end;
{ Ta }
constructor Ta.create;
begin
ShowMessage('TA');
end;
destructor Ta.Destroy;
begin
ShowMessage('TA');
inherited;
end;
procedure Ta.Test;
begin
ShowMessage('TA');
end;
{ Tb }
constructor Tb.create;
begin
inherited ;
ShowMessage('TB');
end;
destructor Tb.Destroy;
begin
ShowMessage('TB');
inherited;
end;
procedure Tb.Test;
begin
ShowMessage('TB');
end;
end
结论:
在构造函数里,C++正常定义就代替了DELPHI的 inherited 的作用
析构函数一定要定义成虚函数,要不不会释放的 ,并将其置为nil
这俩门语言还是有所区别的