OOP练习

#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

这俩门语言还是有所区别的

posted @ 2009-03-06 02:27  谭志宇  阅读(219)  评论(0编辑  收藏  举报