有如下程序:#include<iostream>#include<cmath>using std::cout;class Point{public:friend double distance(const Point &p); //P距原点的距离Point(int xx=0,int yy=0):x(xx),Y(YY){}//①private:int x,y;};double distance(const Point &p){ //②return sqrt(P.x*P.x+P.y*P.y);}int mai

题目

有如下程序:

#include<iostream>

#include<cmath>

using std::cout;

class Point{

public:

friend double distance(const Point &p); //P距原点的距离

Point(int xx=0,int yy=0):x(xx),Y(YY){}//①

private:

int x,y;

};

double distance(const Point &p){ //②

return sqrt(P.x*P.x+P.y*P.y);

}

int main(){

Point p1(3,4);

cout<<distance(p1);

return 0; //③

}

下列叙述中正确的是

A.程序编译正确

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

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

D.程序编译时语句③出错


相似考题
更多“有如下程序:#include&lt;iostream&gt;#include&lt;cmath&gt;using std::cout;class Point{public ”相关问题
  • 第1题:

    有如下程序:include using namespace std;class Base{public:Base(){ cout<<"BB";f()

    有如下程序: #include <iostream> using namespace std; class Base { public: Base(){ cout<<"BB";f(); } void f() { cout<<"Bf";} }; class Derived:public Base { public: Derived() { cout<<"DD"; } void f(){ cout<<"Df"; } }; int main(){ Derived d; return 0;}执行上面的程序将输出______ 。

    A.BBBfDD

    B.BBDfDDDf

    C.DD

    D.DDBBBf


    正确答案:A
    解析:类初始化的相关内容。

  • 第2题:

    有如下程序: include using namespaee std; class A{ public: A( ){cout<<"A";}

    有如下程序:

    include<iostream>

    using namespaee std;

    class A{

    public:

    A( ){cout<<"A";}

    ~A( ){cout<<"A";}

    };

    class B{

    A a;

    public:

    B( ){cout<<"B";}

    ~B( )t cout<<"B";}

    };

    int main( ){

    B b;

    return 0;

    }

    程序的输出结果是______。


    正确答案:ABBA
    ABBA

  • 第3题:

    有如下程序:includeusing namespace std;class A{public: A(){cout<<"A";}};classB{p

    有如下程序: #include<iostream> using namespace std; class A{ public: A(){cout<<"A";} }; classB{public:B().{cout<<"B";}} classC:public A{ B b; public: C(){cout<<"C";} }; int main (){ C obj; return 0;} 执行后的输出结果是

    A.CBA

    B.BAC

    C.ACB

    D.ABC


    正确答案:D
    解析:本题考核类的继承与派生。派生类构造函数执行的一般次序如下:首先调用基类构造函数,调用顺序按照它们被继承时说明的顺序。然后调用子对象的构造函数,调用顺序按照它们在类中的说明顺序。最后是派生类构造函数中的内容。题中,类A是基类,类C是基类A的派生类,类B的对象b是类C的私有成员。所以最后的输出为ABC。

  • 第4题:

    有如下程序:include using namespace std;class AA{public: virtual void f() {cout<

    有如下程序: #include <iostream> using namespace std; class AA { public: virtual void f() { cout<< "AA"; } }; class BB : public AA { public: BB() { cout << "BB"; } }; cla

    A.AA

    B.AABBCC

    C.BBAABBCC

    D.BBBBAACC


    正确答案:D
    解析:本题中,函数f()在基类AA中派生类CC中都声明为虚函数,所以采用动态联编。主函数首先定义类AA的对象aa和指针对象p,然后定义了类BB的对象bb,此时调用了类BB的构造函数输出BB。再定义类CC的对象cc,由于类CC是类BB的派生类,所以此时又调用类BB的构造函数输出BB。最后执行语句“p=&cc; p->f();”,输出AA和CC。

  • 第5题:

    有如下程序:include using namespace std;class A {public: A() {cout<<"A";}};class

    有如下程序: #include <iostream> using namespace std; class A { public: A() {cout<<"A";} }; class B {public:B() {cout<<"B";}}; class C: public A { Bb; public: C() {cout<<"C";} }; int main() {C obj;return 0;}执行后的输出结果是 ______。

    A.CBA

    B.BAC

    C.ACB

    D.ABC


    正确答案:D
    解析:在构造派生类对象时,基类的构造函数要优于派生类的构造函数先执行,所以D为正确答案。

  • 第6题:

    有如下程序:includeusing namespace std;class A {public:A(){cout<<"A";}};classB{p

    有如下程序: #include<iostream> using namespace std; class A { public: A(){cout<<"A";} }; classB{public:B(){cout<<"B";}} classC:public A{ B b; public: C(){cout<<"C";} }; int main(){ C obj; return 0;} 执行后的输出结果是( )。

    A.CBA

    B.BAC

    C.ACB

    D.ABC


    正确答案:D
    解析:此题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化:然后对派生类中的新增成员初始化。