其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
通过类的空(NULL)实例访问类成员方法,什么情况下才报错?

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

C++ @ vc6 #include "stdafx.h" #include class T { public: void foo1() {cout<<"foo1 : Hello,world!"<foo1(); //-->答案 不会报错,正常显示信息 -- foo1 定位可以由类信息决定 <-- pt->foo2(); //-->答案 会报访存错, foo2 定位需要查对象中 vptr 对应的 vtable <-- //delete pt; } .net c# @ vs2003 using System; namespace ConsoleApplication3 { class T { public void foo1(){ Console.WriteLine("foo1 : Hello,world!");} public virtual void foo2(){ Console.WriteLine("T foo2 : Hello,Girl!");} } class T1 : T { public override void foo2() {Console.WriteLine("T1 foo2 : Hello,My Girl!"); } } class Class1 { [STAThread] static void Main(string[] args) { T pt = null; pt.foo1(); //-->答案 报错 <-- pt.foo2(); //-->答案 报错 <-- } } } object pascal @ delphi6 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; T = class public procedure foo1; procedure foo2; virtual; end; T1 = class (T) public procedure foo2; override; end; var Form1: TForm1; implementation {$R *.dfm} { T } procedure T.foo1; begin ShowMessage('foo1 : Hello,world!'); end; procedure T.foo2; begin ShowMessage('T foo2 : Hello,Girl!'); end; { T1 } procedure T1.foo2; begin ShowMessage('T1 foo2 : Hello,My Girl!'); end; procedure TForm1.Button1Click(Sender: TObject); var pt : T; begin pt := nil; pt.foo1; //-->答案 正常工作,显示信息 <-- pt.foo2; //-->答案 报访问地址错 <-- (* pt := T1.Create; pt.foo1(); pt.foo2(); *) end; end. Java2 @ eclipse class T{ public final void foo1(){System.out.println("foo1 : Hello,world!");} public void foo2(){System.out.println("T foo2 : Hello,Girl!");} } class T1 extends T{ public void foo2(){System.out.println("T1 foo2 : Hello,my Girl!");} } public class Test { public static void main(String[] args) { T pt = null; pt.foo1(); //-->答案 报错 <-- pt.foo2(); //-->答案 报错 <-- } }


相关文章

相关软件