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

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

转载于:https://www.cnblogs.com/chengxin1982/archive/2009/03/06/1404338.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值