已知一个类A,其中Fun()函数是类A的一个成员函数,A*p,a;p=&a;,则下面语句正确的是( )。A.语句p=&a;是把对象a赋值给指针变量pB.语句A*p,a;p=&a;调用两次类A的构造函数C.对语句*p.fun();的调用是正确的D.语句 p->fun();和语句 a.fun();等价

题目

已知一个类A,其中Fun()函数是类A的一个成员函数,A*p,a;p=&a;,则下面语句正确的是( )。

A.语句p=&a;是把对象a赋值给指针变量p

B.语句A*p,a;p=&a;调用两次类A的构造函数

C.对语句*p.fun();的调用是正确的

D.语句 p->fun();和语句 a.fun();等价


相似考题
更多“已知一个类A,其中Fun()函数是类A的一个成员函数,A*p,a;p=&a;,则下面语句正确的是()。A.语句p= ”相关问题
  • 第1题:

    类MyClass的定义如下: class MyClass { public: MyClass(){value=0;} SetVariable(int i){value=i} private: int value; }; 则对下列语句序列正确的描述是( )。 MyClass*P,my;p=&my;

    A.语句p=&my;是把对象my赋值给指针变量P

    B.语句MyClass*p,my;会调用两次类MyClass的构造函数

    C.对语句*P.SetVariabte(5)的调用是正确的

    D.语句p->SetVariable(5)与语句my.SetVariable(5)等价


    正确答案:D
    解析: 语句p=&my,是把对象my的地址值赋值给指针变量P;语句MyClass*p,my;,由于p只是一个指向对象的指针,因此定义指针p不调用构造函数,所以此语句只调用一次构造函数;讨成员函数的引用可以通过两种形式:指针->成员函数(形参表)或者对象名、成语函数名(形参表)。

  • 第2题:

    类MyClas定义如下: Class MyClas{ public: MyClas(){value=0;} setVariable(int i){value=I;} private: int value; }则以下对语句序列 MyClas *p,my;p=&my; 的描述正确的是( )。

    A.语句 p->setVariable(5) 与语句 my.setVariable(5) 等价

    B.对语句 *p.setVariable(5)的调用是正确的

    C.语句 MyClas *p,my; 会调用两次类MyClas的构造函数

    D.语句 p=&my; 是把对象my赋值给指针变量p


    正确答案:A
    解析:选项A中,p是对象指针,所以调用p的成员要用符号“->”,而my是一般的类对象,所以调用my的成员用“.”;选项B中正确的调用方式应该是(*p).setVariable;选项C中仅调用一次类对象的构造函数;选项D是把对象my的地址赋值给指针变量p,而不是对象本身。

  • 第3题:

    已知p是一个指向类A公有数据成员的指针,a是类A的一个对象,如果要给p所指向的成员赋值为5,语句应写为【 】。


    正确答案:a.  *p=5;
    a.  *p=5; 解析:由于是公有成员,类对象可以直接访问类的公有成员*号表示指针所指向的内容。

  • 第4题:

    已知f1(int)是类A的公有成员函数,并将指针p定义为可以指向函数f1的指针类型,则可以实现让p是指向成员函数f1()的指针的语句为【 】。


    正确答案:p=A::f1;
    p=A::f1;

  • 第5题:

    Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是Sample a[2],*P=new Sample;

    A.0

    B.1

    C.2

    D.3


    正确答案:D
    解析:一共定义了3个Sample的对象,a[2]包含两个sample元素,调用两次构造函数,newsample调用一次构造函数,故其构造函数执行了3次。

  • 第6题:

    类MyClass的定义如下: class MyClass { public: MyClass(){value=0;} SetVariable(int i){value=i;) private: int value; }; 则对下列语句序列正确的描述是( )。

    A.MyClass*p,my;p=&my;

    B.语句p=&my;是把对象my赋值给指针变量p

    C.语句MyClass*p,my;会调用两次类MyClass的构造函数

    D.对语句*p.SetV ariable(5)与语句my.SetVariable(5)等价


    正确答案:D

  • 第7题:

    若有函数fun(x,y),并且已经使函数指针变量p指向函数fun,则使用p调用函数fun的正确方法是( )。

    A.(*p)fun(x,y);

    B.*pfun(x,y);

    C.(*p)(x,y)

    D.*p(x,y)


    正确答案:C

  • 第8题:

    Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是( )。 Samplea[2],*p=newSample;

    A.0

    B.1

    C.2

    D.3


    正确答案:D
    D。【解析】构造函数在对象被创建时由系统自动调用,本题共创建了3个对象。

  • 第9题:

    拷贝构造函数是用一个已知的对象为新创建的同类的对象赋初值,下列( )情况下它没有起作用。

    A.声明语句中,用一个对象初始化另一个对象。如point p2(p1);,其中:point为一个类, p2、p1为该类的两个对象,p1是一个已知的对象

    B.将对象作为函数实参传递给形参,用来初始化形参时

    C.当函数返回一个对象值,并用这个对象初始化一个匿名对象时

    D.调用对象的一个成员函数时


    正确答案:D
    解析:调用对象的一个成员函数时不会调用拷贝构造函数。

  • 第10题:

    已定义以下函数      Int fun(int *p)      {return *p;}  则fun函数返回值是()

    • A、不确定的值
    • B、一个整数
    • C、形参P中存放的值
    • D、形参P的地址值

    正确答案:B

  • 第11题:

    假定AB为一个类,则执行"ABa,b(2),c[3],*p=&a"语句时共调用该类无参构造函数的次数为()次。


    正确答案:4

  • 第12题:

    执行下列说明语句,其调用构造函数的次数为()。 Aa[5],*p[2];其中,A是一个类名

    • A、5
    • B、6
    • C、7
    • D、10

    正确答案:A

  • 第13题:

    已知“int*p;fun(p);”,其中,函数fun没有返回值,且其形参定义为引用调用方式,则下列给出的fun函数原型中正确的是()。

    A.voidfun(inta[]);

    B.voidfun(int*&a);

    C.voidfun(int&a[]);

    D.voidfun(int&*a);


    正确答案:B

  • 第14题:

    已知函数原型"double fun();",要定义一个函数指针变量p指向该函数的首地址,则其定义语句为"double (*p)()=fun;"。()

    此题为判断题(对,错)。


    正确答案:正确

  • 第15题:

    假定AB为一个类,则执行“ABa(4),b[3],*p[2];”语句时,自动调用该类构造函数3次。()


    参考答案:错误

  • 第16题:

    有如下程序: #include<iostream> using namespace std; class Instrument{ public: virtual void Display=0; }; class Pian0:public Instrument} public: void Display{/*函数体略*/} }; intmain{ Instrument S; Instrument*P=0: //…; return 0; } 下列叙述中正确的是( )。

    A.语句“Insturment*P=0;”编译时出错

    B.语句“Instnunent s;”编译时出错

    C.类Pian0中的Display函数不是虚函数

    D.类Instrument是一个虚基类


    正确答案:B
    本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为0的函数,包含纯虚函数的类为抽象类,抽象类不能被实例化,所以语句“Instrmnents;”在编译时出错。

  • 第17题:

    有如下程序:

    #include<iostream>

    using namespace std;

    class Instrument{

    public:

    virtual void Display()=0;

    };

    class Piano:public Instrument {

    public:

    void Display(){/*函数体程序略*/}

    };

    int main(){

    Instrument s;

    Instrument *p=0;

    //…;

    return 0;

    }

    下列叙述中正确的是

    A.语句“Instrument *p=0;”编译时出错

    B.语句“Instrument s;”编译时出错

    C.类Piano中的Display函数不是虚函数

    D.类Instrument是一个虚基类


    正确答案:B
    解析:Instrument为抽象类,抽象类不能用来定义对象。故本题应选B。

  • 第18题:

    类MyClass的定义如下: classMyClass { public: MyClass(){value=0;} SetVariable(inti){valtic=i;} private: intvalue; }; MyClass*P,my;p=&my; 则对下列语句序列正确的描述是( )。

    A.语句p=&my;是把对象my赋值给指针变量P

    B.语句MyClass*P,my;会调用两次类MyClass的构造函数

    C.对语句*P.SetVariable(5)的调用是正确的

    D.语句P->SetVariable(5)与语句my.SetVariable(5)等价


    正确答案:D
    D。【解析】语句p=&my;是把对象my的地址值赋给指针变量P。语句MyClass*P,my;,由于P只是一个指向对象的指针,因此定义指针P不调用构造函数,所以此语句只调用一次构造函数。对成员函数的引用可以通过两种形式:指针->成员函数(形参表)或者对象名.成员函数名(形参表)。

  • 第19题:

    类中包含了一个静态成员函数,则main函数中和P.fl(P);语句具有同样功能的语句为______。

    include<iostream.h>

    class M

    {

    public:

    M(int A){A=a;B+=a;}

    static void fl(M m);

    private:

    int A;

    static int B;

    };

    void M::f1(M m)

    {

    cout<<"A="<<m.A<<endl;

    cout<<"B="<<m.B<<endl;

    }

    int M::B=10;

    void main( )

    {

    M P(5);

    P.f1(P);

    }


    正确答案:M::f1(P);
    M::f1(P); 解析:由于f1是类M的静态成员函数,即说明类M的任何对象都共享一份f1,因此,不仅可以从对象那里访问f1,还可以用域操作符::通过类名来访问。

  • 第20题:

    假设person是一个类,p1是该类的一个对象,p2是一个指向p1的指针,getname()是其中的一个函数,则下面对象的使用不正确的是( )。

    A.person.getname();

    B.p1.getname();

    C.p1.person::getname();

    D.p2->getname();


    正确答案:A
    解析:选项B其实是选项C的一种缩写,效果相同,通过类person不能调用方法getname()。

  • 第21题:

    已知fl(int)是类A的公有成员函数,p是指向成员函数fl()的指针,采用赋值,( )是正确的。

    A.p=fl

    B.P=A::fl

    C.P=A::fl()

    D.P=fl()


    正确答案:B

  • 第22题:

    f1()函数是类A的公有成员函数,p是指向类的成员函数f1()的指针,下列表示中正确的是()。

    • A、p=f1()
    • B、p=f1
    • C、p=A::f1
    • D、p=A::f1()

    正确答案:C

  • 第23题:

    设Time是一个类,现有指针p的定义语句:const Time *p;则通过指针p不可以修改Time类对象的公有数据成员。


    正确答案:正确