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
这俩门语言还是有所区别的
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号