niusouti.com

请判断下列代码在程序关闭时,正确的对象释放顺序TMybutton=class(Tbutton)ProtectedDestructor Destroy;override;End;…………destructor TMyButton.Destroy;Begininherited;Application.MessageBox(PChar(Name),’Destroy’,mb_ok);end;var AButton,BButton:TMyButton;procedure TForm1.FormCreate(Sende

题目

请判断下列代码在程序关闭时,正确的对象释放顺序

TMybutton=class(Tbutton)

Protected

Destructor Destroy;override;

End;

…………

destructor TMyButton.Destroy;

Begin

inherited;

Application.MessageBox(PChar(Name),’Destroy’,mb_ok);

end;

var AButton,BButton:TMyButton;

procedure TForm1.FormCreate(Sender:TObject);

begin

Abutton:=TmyButton.Create(Nil);

With AButton do

begin

Parent:=form1;

Top:=100;

Left:=100;

Visible:=True;

Name:=’ABtn’;

end;

BButton:=TMyButton.Create(Application);

With BButton do

begin

Parent:=Form1;

Top:=100;

Left:=200;

Visible:=True;

Name:=’BBtn’;

end;

procedure TForm1.FormDestroy(Sender:TObject);

begin

…………

end;

A.BButton.Destroy->Form1.Destroy->AButton.Destroy

B.上述都不对,应该手工调用 Abutton.free,否则会造成AButton没有释放的

错误

C.Form1.Destroy->AButton.Destroy->BButton.Destroy

D.AButton.Destroy->Form1.Destroy->BButton.Destroy


相似考题
更多“请判断下列代码在程序关闭时,正确的对象释放顺序 TMybutton=class(Tbutton) Protected Destru ”相关问题
  • 第1题:

    阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。

    [说明]

    下面代码实现class C对class A和B的protected成员和public成员的调用。仔细阅读[代码5-1]、[代码5-2],在(n)处写出正确的运行结果。

    [代码5-1]

    include <iostream.h>

    class A {

    private:

    int a1;

    protected:

    int a2;

    public:

    A ( int v1,int v2,int v3 ): a1 ( v1 ) ,a2 ( v2 ) ,a3 ( v3 )

    {}

    int a3

    };

    class B : pubiic A{

    private:

    int b1;

    protected:

    int b2;

    public:

    B ( int v1,int v2,int v3,int v4,int v5,int v6 )

    : A(v1,v2,v3),b1 (v4),b2(v5),b3 (v6) {}

    int b3;

    };

    class C : public B{

    private:

    int c1;

    protected:

    int c2;

    public:

    int c3;

    C (int v1,int v2,int v3,int v4,int v5,int v6,int v7,int v8,int v9 )

    : B ( v1,v2,v3,v4,v5,v6 ) ,c1 ( v7 ),c2 ( v8 ) ,c3 v9

    void disp ( )

    {

    cout << "a2 in class C =" << a2 << endl;

    cout << "a3 in class C =" << a3 << eudl;

    cout << "b2 in class C =" << b2 << endl;

    tout << "b3 in class C =" << b3 << endl;

    }

    };

    [代码5-2]

    voidmain()

    {

    Cdemo(10,20,30,40,50,60,70,80,90);

    cout<<"对象demo.a3="<<demo.a3< cout<<"对象demo.b3="<<demo.b3< cout<<"对象demo.c3="<<demo.c3< demo.disp( );

    }

    [运行结果]

    对象demo.a3=(1)

    对象demo.b3=(2)

    对象demo.c3=(3)

    a2 in class C=(4)

    a3 in class C=(5)

    b2 in class C=(6)

    b2 in class C=(7)


    正确答案:(1) 30 (2) 60 (3) 90 (4) 20 (5) 30 (6) 50 (7) 60
    (1) 30 (2) 60 (3) 90 (4) 20 (5) 30 (6) 50 (7) 60 解析:本题代码定义了class C、class A和class B。其印class B继承了class A,class C又继承了class B,class C对 class A和B的protected成员和public成员的调用。明白了这个关系就不难解题了。

  • 第2题:

    下面程序的运行结果是()。includeclass base{protected:int a;public:base(){cout<<

    下面程序的运行结果是( )。 #include<iostream.h> class base{ protected: int a; public: base(){cout<<“0”;} }; Class basel:Virtual base{ public: basel(){cout<<“1”;} }; Class base2:virtual base{ public: base2(){cout<<“2”;)

    A.0123

    B.3120

    C.0312

    D.3012


    正确答案:A
    解析: 本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

  • 第3题:

    有如下程序:

    #include<iostream>

    using namespace std;

    class Music{

    public:

    void setTitle(char*str){strcpy(title,str);}

    protected:

    char type[10];

    private:

    char title[20];

    };

    class Jazz:public Music{

    public:

    void set(char*str){

    strcpy(type,”Jazz”); //①

    strcpy(title,str); //②

    }

    };

    下列叙述中正确的是

    A.程序编译正确

    B.程序编译时语句①出错

    C.程序编译时语句②出错

    D.程序编译时语句①和②都出错


    正确答案:C
    解析:数据成员title在基类中声明为私有成员,派生类不能访问基类中的私有成员,故语句②在编译时出错。本题选C。

  • 第4题:

    给出下列的代码,则下列选项中哪个是类A合理的内部类? class A { protected int i; A(int i) { this.i=i; } }

    A.class B { }

    B.class B extends A { }

    C.class B extends A { B( ){System.out.println("="+i);} }

    D.class A { }


    正确答案:A
    解析:在定义内部类时,内外部类不能同名,不存在继承关系,可以把内部类当成类的成员。

  • 第5题:

    有下列的程序:includeincludeusing namespace std;class MyString{pub

    有下列的程序: #include<cstring.h> #include<iostream.h> using namespace std; class MyString { public: MyString(const char*s); ~MyString()<delete[]data;} protected: unsigned len; char*data; };

    A.构造函数的实参不允许是本类的对象

    B.没有定义实现深层复制(深拷贝)的复制构造函数

    C.构造对象a时实参与形参类型不符

    D.系统不能生成默认的复制构造函数


    正确答案:B
    解析: 此题考查的是类的构造函数。C++语言中当一个新对象被另一个已存在的同类型对象初始化时要调用复制构造函数。语句“My String b(a);”符合条件,将调用My String的复制构造函数,但类My String未定义复制构造函数,所以会出错。

  • 第6题:

    下列关于命令DO FORM. XX NAME YY LINKED的陈述中,正确的是( )。

    A.产生表单对象引用变量XX,在释放变量xx时自动关闭袭单

    B.产生表单对象引用变量XX,在释放变量XX时并不关闭表单

    C.产生表单对象引用变量YY,在释放变量YY时自动关闭表单

    D.产生表单对象引用变量YY,在释放变量YY时并不美闭表单


    正确答案:C
    C。【解析]NAME子名的作用是在系统中建立指定名字的变量,并使它指向表单对象,加上IANKED关键字时,表单对象将随指向它的变量的清除而关闭。

  • 第7题:

    给出—卜列的代码,则下列选项中( )可以表示为类A合理的内部类。 class A{ protected int i; A (int i) { this i=i; }}

    A.class B{ }

    B.class B extends A{ }

    C.class B extends A{ B ( ){System.out.println("i="+i);} }

    D.class A{ }


    正确答案:A

  • 第8题:

    请找出下列程序中错误之处 ______。 include classA{private: intx1;protected: int

    请找出下列程序中错误之处 ______。

    #include<iostream.h>

    class A{

    private:

    int x1;

    protected:

    int x2;

    public:

    int x3;

    };

    class B:public A{

    private:

    int y1;

    protected:

    int y2;

    public:

    int y3;

    void disp(){cout<<x1<<y1<<end1:} //A

    void set(int i) {x2=i;} //B

    };

    void main() {

    B bb;

    bb.x3=10; //C

    bb.y3=10; //D

    }

    A.A

    B.B

    C.C

    D.D


    正确答案:A

  • 第9题:

    给出下列java源代码:  //Point x  Public class Interesting{}  在源代码//point x处添加()能符合java语法 

    • A、import java.awt.*
    • B、package local.util
    • C、class MoreInteresting{}
    • D、protected class MoreInteresting{}

    正确答案:A,B,C

  • 第10题:

    下列哪个类声明是正确的()。

    • A、abstract final class H1{…}
    • B、abstract private move(){…}
    • C、protected private number;
    • D、public abstract class Car{…}

    正确答案:D

  • 第11题:

    现有:  class HorseRadish  {      //insert code here  protected HorseRadish (int x)    {      System.out.println ("bok choy");      }      }  class Wasabi extends HorseRadish  {  public static void main (String  []  args){    Wasabi w- new Wasabi();     }     }  分别插入到第2行,哪两项允许代码编译并产生”bok choy”输出结果()

    • A、 protected HorseRadish()  {this (42);}
    • B、  protected HorseRadish()  {}
    • C、  //just a comment
    • D、  protected  HorseRadish()  {  new HorseRadish (42);}

    正确答案:A,D

  • 第12题:

    多选题
    你计划使用VisualStudio.NET去创建一个使用在你公司所有程序的TestKBusinessRules类,TestKBusinessRules详细说明了商业规则并且以这些规则来执行计算在你公司其他开发者一定不能过重载这个功能而且子程序以他们自己定义来第一在TestKBusinessRules.哪两种你可以创建BusineeRules吗?()
    A

    创建一个Windows控制库对象

    B

    创建一个类库对象

    C

    创建一个Windows服务对象

    D

    使用下面一段代码去定义BusinessRules protected class TestKBusinessRules

    E

    使用下面一段代码去定义BusinessRules publicnew class TestKBusinessRules

    F

    使用下面一段代码去定义BusinessRules publicsealed class TestKBusinessRules

    G

    使用下面一段代码去定义BusinessRules.publicabstract class TestKBusinessRules


    正确答案: E,F
    解析: 暂无解析

  • 第13题:

    下面关于命令DOFORMXXNAMEYYLINKED的陈述中,正确的是()

    A、产生表单对象引用变量XX,在释放变量XX时自动关闭表单

    B、产生表单对象引用变量XX,在释放变量XX时并不关闭表单

    C、产生表单对象引用变量YY,在释放变量YY时自动关闭表单

    D、产生表单对象引用变量YY,在释放变量YY时并不关闭表单


    参考答案:C

  • 第14题:

    下列程序在构造函数和析构函数中申请和释放类的数据成员int * a,申请时使用形参b初始化a,请填空。

    class A

    {

    public:

    A(int b) ;

    ~A( ) ;

    private:

    int * a;

    };

    A: :A(int b)

    {

    ______;

    }

    A: :~A( )

    {

    ______;

    }


    正确答案:a=Hew int(b) delete a
    a=Hew int(b) delete a 解析:C++中new和delete的使用有如下几种:① a=new int; delete a;②a=new int(10) ;delete a;③a=Hew int[10] ;delete[ ] a;。

  • 第15题:

    下面程序的运行结果是includeclass base{protected:int a;public:base( ){cout<<"0

    下面程序的运行结果是 #include<iostream.h> class base{ protected: int a; public: base( ){cout<<"0";} }; class basel:virtual base { public: base1( ){cout<<"1";} }; class base2:virtual base{ public:

    A.123

    B.3120

    C.312

    D.3012


    正确答案:A
    解析:本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

  • 第16题:

    有如下程序:include using namespace std;Class x{protected: int a;public: x() {a=

    有如下程序: #include <iostream> using namespace std; Class x { protected: int a; public: x() { a=1; } }; class x1 : virtual public x { public: x1() { a+=1; cout<<

    A.1

    B.123

    C.242

    D.244


    正确答案:D
    解析:本题程序中引入了虚基类。在主函数中,执行语句“y obj;”时,先执行虚基类x的构造函数,使a=1,然后执行类x1的构造函数,使a=2,并输出值2。再执行类x2的构造函数,使a=4,并输出值4。最后执行类y的构造函数,输出值4。

  • 第17题:

    下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该程序。

    class Myclas{

    int *x;

    public:

    MyClas(int n);

    ~MyClas();

    };

    MyClas::MyClas(intn){

    【 】;

    }

    MyClas::~MyClas(){

    【 】;

    }


    正确答案:x=new int(n)delete x
    x=new int(n),delete x 解析:在类的构造函数中,是申请内存空间,并使指针x指向构造函数的形参n,所以构造函数的函数体应为:x=newint(n);。在析构函数中,是释放类的私有成员,即指针变量x,所以析构函数的函数体应该为deletex;。

  • 第18题:

    下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。

    class Myclass {

    public:

    Myclass(int num);

    ~ Myclass( );

    public:

    int *p;

    };

    Myclass: :Myclass( int hum) {

    【 】

    Myclass:: ~ Myelass( ) {

    【 】;

    }。


    正确答案:P=new int(a)、delete P
    P=new int(a)、delete P 解析:new和delete的用法。

  • 第19题:

    有下列程序:includeusing namespace std;class TestClass{protected:TestClass(){cou

    有下列程序: #include<iostream> using namespace std; class TestClass{ protected: TestClass(){cout<<'x';} TestClass(char c){cout<<c;} }; class TestClassl:public TestClass{ public: TestClassl(char c){cout<<c;}

    A.y

    B.yx

    C.xy

    D.yy


    正确答案:C
    解析: 程序中的类TestClass为基类,TestClass1为TestClass的派生类。由main主函数入手,定义TestClass1类型的对象d1,参数值为y。 TestClass1类继承TestClass,所以主函数中“TestClass1 d('y');”语句首先调用“TestClass1(char c){coutc;}”,然后调用基类中的 “TestClass(){cout《'x';}输出x,最后执行“TestClass(char c){coutc;}”,输出y,即答案为“xy”。

  • 第20题:

    试题五(共 15 分)阅读以下说明和 Java 程序,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下 Jave 代码实现一个简单客户关系管理系统(CrM) 中通过工厂 (Customerrfactory )对象来创建客户(Customer) 对象的功能。客户分为创建成功的客户 (realCustomer) 和空客户(NullCustomer) 。空客户对象是当不满足特定条件时创建或获取的对象。类间关系如图 5-1 所示。【Java 代码】Abstract class Customer﹛Protected String name;()boolean isNil()()String getName();﹜ Class realCustomer ()Customer﹛Public realCustomer(String name )﹛ return false; ﹜﹜ Class NullCustomer()Customer﹛Public String getName()﹛ return ″Not Available in Customer Database″; ﹜Public boolean isNil()﹛ return true; ﹜﹜ class Customerfactory {public String[] names = {"rob","Joe","Julie"};public Customer getCustomer(String name) {for (int i = 0; i < names.length;i++) {if (names[i].())﹛return new realCusωmer(name);﹜﹜return ()﹜﹜ Public class CrM﹛Public viod get Customer()﹛Customerfactory()Customer customer1-cf.getCustomer(″rob″);Customer customer2=cf.getCustomer(″rob″);Customer customer3= cf.getCustomer(″Julie″);Customer customer4= cf.getCustomer(″Laura″);System.out.println(″customer1.getName());System.out.println(″customer2getName());System.out.println(″customer3.getName());System.out.println(″customer4.getName());﹜ Public static viod main (String[]arge)﹛CrM crm =new CrM();Crm,getCustomer();﹜﹜/*程序输出为:CustomerrobNot Available in Customer DatabaseJulieNot Available in Customer Datable*/int main()﹛CrM*crs=newCrM();Crs->getCustomer();Crs->getCustomer();Delete crs;return();﹜/*程序输出为:CustomerrobNot Available ini Customer DatabaseJulieNot Available in Customer Database


    答案:
    解析:
    1)public abstract2) public abstract3)extends4)extends5)equals(name)6)new Null Customer()7) cf=New CustomerFactory();
    【解析】

    本题考察Java程序设计客户关系管理系统。1)public abstract 定义可访问方法2) public abstract3)extends 继承Customer类4)extends5)equals(name) 判断名字是否在数组集合内6)new Null Customer() 当不满足条件时创建一个空对象7) cf=New CustomerFactory(); 实例化对象cf

  • 第21题:

    下列哪个类的声明是正确的()

    • A、abstract final class HI{}
    • B、abstract private move(){}
    • C、protected private number;
    • D、public abstract class Car{}

    正确答案:D

  • 第22题:

    下面关于命令DO FORM XX NAME YY LINKED的陈述中,哪个是正确的()

    • A、产生表单对象引用变量XX,在释放变量XX时自动关闭表单
    • B、产生表单对象引用变量XX,在释放变量XX时并不关闭表单
    • C、产生表单对象引用变量YY,在释放变量YY时自动关闭表单
    • D、产生表单对象引用变量YY,在释放变量YY时并不关闭表单

    正确答案:C

  • 第23题:

    单选题
    下面关于命令DO FORM XX NAME YY LINKED的陈述中,哪个是正确的()
    A

    产生表单对象引用变量XX,在释放变量XX时自动关闭表单

    B

    产生表单对象引用变量XX,在释放变量XX时并不关闭表单

    C

    产生表单对象引用变量YY,在释放变量YY时自动关闭表单

    D

    产生表单对象引用变量YY,在释放变量YY时并不关闭表单


    正确答案: C
    解析: 暂无解析