有如下类定义:class Point{int x__, y__;public:Point(): x_(0), y_(0) {}Point(int x, int y =0): x_(x), y_(y) {}若执行语句Point a(2),b[3], *c[4];则Point 类的构造函数被调用的次数是( )。A.2次B.3次C.4次D.5次

题目

有如下类定义:class Point{int x__, y__;public:Point(): x_(0), y_(0) {}Point(int x, int y =0): x_(x), y_(y) {}若执行语句Point a(2),b[3], *c[4];则Point 类的构造函数被调用的次数是( )。

A.2次

B.3次

C.4次

D.5次


相似考题
更多“有如下类定义:class Point{int x__, y__;public:Point(): x_(0), y_(0) {}Point(int x, int y =0): x_(x), y_(y) {}若执行语句Point a(2),b[3], *c[4];则Point 类的构造函数被调用的次数是( )。A.2次B.3次C.4次D.5次”相关问题
  • 第1题:

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

    【说明】Point是平面坐标系上的点类,Line是从Point派生出来的直线类。

    include <iostream.h>

    class Point

    {public:

    Point (int x, int y) ;

    Point (Point &p) ;

    ~Point();

    void set (double x, double y) ;

    void print();

    private:double X,Y;

    };

    Point::Point (int x, int y) //Point 构造函数

    {X=x; Y=y; }

    Point::Point ( (1) ) //Point 拷贝构造函数

    {X=p.X; Y=p.Y;}

    void Point::set (double x, double y)

    {X=x; Y=y; }

    void Point::print()

    {cout<<' ('<<X<<","<<Y<<") "<<endl; }

    Point::~Point()

    {cout<<"Point 的析构函数被调用! "<<endl;

    class Line: public Point

    {public:

    Line (int x, int y, int k) ;

    Line (Line &s) ;

    ~Line();

    void set (double x, double y, double k)

    void print();

    private:double K;

    };

    (2)//Line 构造函数实现

    { K=k;}

    (3)//Line 拷贝构造函数实现

    {K=s.K;}

    void Line::set (double x, double y, double k)

    { (4);

    K=k;

    }

    void Line::print()

    {cout<<" 直线经过点";

    (5);

    cout<<"斜率为: k="<<K<<endl;

    }

    Line: :~Line()

    {cout<<"Line 析构函数被调用! "<<endl;

    }

    void main()

    {Line 11 (1,1,2) ;

    11 .print();

    Linel2 (11) ;

    12.set (3,2,1) ;

    12.print();

    }


    正确答案:(1)Point &p (2)Linc::Line(int xint y int k):Point(xy) (3)Line::Line(Line &s):Point(s) (4)Point::set(x y) (5)Point::print()
    (1)Point &p (2)Linc::Line(int x,int y, int k):Point(x,y) (3)Line::Line(Line &s):Point(s) (4)Point::set(x, y) (5)Point::print() 解析:(1)Point &p
    Point拷贝构造函数的形参必须是Point对象的引用。
    (2)Linc::Line(int x,int y, int k):Point(x,y)
    Line的构造函数必须先调用Point构造函数构造Line的基类Point。
    (3)Line::Line(Line &s):Point(s)
    Line的拷贝构造函数必须先调用Point拷贝构造函数来构造并复制Line对象的基类 Point部分。
    (4)Point::set(x, y)
    Line的set成员函数必须通过Point的set成员函数才能访问基类的私有成员。而且在 set名前必须加成员名限定Point::,以区别Line的set函数。
    (5)Point::print()
    Line的print成员函数必须通过Point的print成员函数才能访问打印基类的私有成员。而且在print名前必须加成员名限定Point::,以区别Line的print函数。

  • 第2题:

    有如下程序: include using namespace std; class Point{ int x, y; public: Point(i

    有如下程序:

    #include<iostream>

    using namespace std;

    class Point{

    int x, y;

    public:

    Point(int x1=0, int y1=0):x(x1), y(y1){}

    int get(){return x+y;)

    };

    class Circle{

    Point center;

    int radius;

    public:

    Circle(int CX, int cy, int r):center(cx, cy), radius(r){}

    int get(){return center. get()+radius;}

    };

    int main(){

    circle c(3, 4, 5);

    cout<<c. get()<<end1;

    return ():

    }

    运行时的输出结果是( )。

    A) 5

    B) 7

    C) 9

    D) 12

    A.

    B.

    C.

    D.


    正确答案:D

  • 第3题:

    有以下程序: include using namespace std; class Point' { public: void SetPoint(

    有以下程序: #include <iostream> using namespace std; class Point' { public: void SetPoint(int x,int y); void Move(int xOff,int yOff); int GetX() { return X; } int GetY() { return Y; } private: int X,Y; }; void Point::SetPoint(int x, int y) { X=x; Y=y; } void Point: :Move(int xOff, int yOff) X+=xOff; Y+=yOff; } int main () { Point p1; p1.SetPoint(1,2); p1.Move (5, 6); cout<<"Point1 is ("<<p1.GetX()<<','<<p1.GetY()<<")"<<end1; return 0; } 执行后的输出结果是( )。

    A.Point1 is (6,8)

    B.Point1 is (1,2)

    C.Point1 is (5,6)

    D.Point1 is (4,4)


    正确答案:A
    解析:本题考核对象的定义与使用。程序中定义了一个类Point,在主函数中定义了一个Point类的对象p1,然后通过对象p1调用其成员函数SetPoint()和Move()实现移位的操作。

  • 第4题:

    有以下程序:includeusingnamespacestd;definePI3.14classPoint{private: intx,y;pub

    有以下程序: #include <iostream> using namespace std; #define PI 3.14 class Point { private: int x,y; public: Point(int a,int b) { x=a; y=b; } int getx() { return x; } int gety() { return y; } }; class Circle : public Point { private: int r; public: Circle(int a,int b,int c):Point(a,b) { r=c; } int getr() { return r; } double area() { return PI*r*r; } }; int main() { Circle c1(5,7,10); cout<<cl.area()<<endl; return 0; } 程序执行后的输出结果是

    A.314

    B.157

    C.78.5

    D.153.86


    正确答案:A
    解析:本题考核派生类的定义和应用。本程序设计了一个点类Point,包含了横、纵两个坐标数据x和y,由它派生出了圆类Circle,并加入了新的数据成员,即一个半径r和一个求圆面积的函数成员area。在主函数main中,首先定义了一个圆Circle类的对象c1,并通过它的构造函数初始化其数据成员。由此可知,其半径r的值为10,所以其面积为PI*10*10=314,即对象c1的函数成员area的返回值为314。

  • 第5题:

    有如下程序:include using namespace std;class point{int x, y;public:point( int v

    有如下程序:#include <iostream>using namespace std;class point{ int x, y;public: point( int vx, int vy ) { X=vx; y=vy; } point() { x=0; y=0; } point operator+ ( point p1 ) { point p; int px = x + p1.x; int py = y+ p1.y; return point( px, py ); } point operator-( point p1 { point p; int px = x - p1.x; int py = y - p1.y; return point( px, py ); } void print() { cout<<x<<","<<y<<end1; }};int main(){ point p1( 10, 10 ), p2( 20, 20 ); p1 = p1 + p2; p1.print(); return ();}执行后的输出结果是( )。

    A.10, 10

    B.20, 20

    C.10, 20

    D.30, 30


    正确答案:D

  • 第6题:

    有如下程序: #inClude<iostream> using namespaCe std; Class Point{ publiC: statiC int number; publiC: Point( )t.number++;} ~Point( ){number--;} }; , int P0int::number=0; int main( ){ Point *ptr: Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’ } Point C; Cout<<Point:::number<<endl; delete[]ptr; return 0; } 执行这个程序的输出结果是( )。

    A.3

    B.4

    C.6

    D.7


    正确答案:C
    本题考查默认构造函数.题目中定义.个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。

  • 第7题:

    有如下类定义: class Point { int x_,y_; public: Point():x_(0),y_(0){} Point(int x,int y=0):x_(x),y_(y){} }; 若执行语句 Point a(2),b[3],*c[4]; 则Point类的构造函数被调用的次数是

    A.2次

    B.3次

    C.4次

    D.5次


    正确答案:C
    解析:本题考查的知识点是类的构造函数。构造函数在对象被创建的时候由系统自动调用。在Point a(2),b[3],*c[4];语句中:a(2)是定义一个对象并传入构造参数2,所以此时会调用1次构造函数:b[3]是定义一个包含3个对象的数组,所以构造函数会被调用3次;而*c[4]定义的是一个包含4个Point类对象指针的数组,它并没有创建任何Point对象,故构造函数一次也不会被调用。故应该选择C。

  • 第8题:

    若有以下程序:include using namespace std;define PI 3.14class Point{private: in

    若有以下程序: #include <iostream> using namespace std; #define PI 3.14 class Point { private: int x,y; public: Point(int a,int b) { x=a; y=b; } int getx() { return x; } int gety() { return y; } }; class Circle : public Point { private: int r; public: Circle(int a, int b,int c) :Point(a,b) { r=c; } int getr() { return r; } double area() { return PI*r*r; } }; int main() { Circle c1(5,7,10); cout<<c1.area()<<end1; return 0; } 程序执行后的输出结果是( )。

    A.314

    B.157

    C.78.5

    D.153.86


    正确答案:A
    解析:本题考核派生类的定义和应用。本程序设计了一个点类Point,包含了横、纵两个坐标数据x和y,由它派生出了圆类Circle,并加入了新的数据成员,即一个半径数据,和一个求圆面积的函数成员area。在主函数中,首先定义了一个圆Circle类的对象c1,并通过它的构造函数初始化其数据成员。由此可知,其半径r的值为10,所以其面积为PI*10*10=314,即对象c1的函数成员area的返回值为314。

  • 第9题:

    有如下类定义: class Test { int x_,y_; public: Test ():a_(0) ,b_(0) {} Test(int a,int b=0) :a_(a),b_(b){} }; 若执行语句 Test x(2) ,y[3],*z[4]; 则Test类的构造函数被调用的次数是( )。

    A.2次

    B.3次

    C.4次

    D.5次


    正确答案:C
    解析:定义对象x时执行一次构造函数(调用Test(int a,int b=0) ),定义对象数组y时,构造函数(注意,该构造函数必须是没有任何参数的)的执行次数与数组中对象的个数相等,即需要执行3次,最后定义一个指向Test对象的指针数组,它并不会创建对象,从而也就不会去执行构造函数,故构造函数一共执行了4次。

  • 第10题:

    若有以下程序:include using namespace std;class point{private: int x, y;public:

    若有以下程序: #include <iostream> using namespace std; class point { private: int x, y; public: point ( ) { x=0; y=0; } void setpoint(int x1,int y1) { x=x1; y=y1;

    A.12,12

    B.5,5

    C.12,5

    D.5,12


    正确答案:D
    解析:本题考核对象指针的定义与使用。分析程序:程序首先定义一个类point。类point中有两个私有成员,整型变量x和y,还有两个公有成员函数setpoint(intx1,inty1)和dispoint()。函数setpoint()用来设置私有成员x和y的值,而函数dispoint()用来显示私有成员x和y的值。主函数中,首先定义了类point的指针对象p,并申请了内存空间,然后调用对象p中公有成员setpoint给对象p中的私有成员x和y赋值,然后调用成员函数dispoint显示x和y的值。由此可知,最后输出的值应该是5,12。

  • 第11题:

    有以下类定义 class Point{ public: Point{int x = 0, int y=0) {_x = x; _y = y;} void Move int xoff, int yoff) {_x +=xoff;_y+=yoff;} void Print() const {cout<<'('<<_x<<','<<_y<<')' << end1;} private: int_x,_y; }; 下列语句中会发生编译错误的是

    A.Point pt;pt.Print();

    B.const Point pt;pt.Print();

    C.Point pt;pt.Move(1, 2);

    D.const Point pt;pt.Move(1, 2)


    正确答案:D
    解析:本题考核常对象、常数据成员与常成员函数。如果将二个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数,D选项中对象pt为常对象,而成员函数Move()不是常成员函数,所以这样调用会发生编译错误。

  • 第12题:

    试完成下述程序片段:public class Point(){ int x,y;public Point(int x,int y){ =x; =y;}......}

    A. Point.x Point.y

    B.无解

    C. x1 y1

    D.this.x this.y


    正确答案:D

  • 第13题:

    有如下类定义: class Point { int xx.yy; public: Point:xx(0),yy(0){} Point(int x,int Y=0):xx(X),YY(Y){} }; 若执行语句 Point a(2),b[3],幸c[4]; 则Point类的构造函数被调用的次数是( )。

    A.2次

    B.3次

    C.4次

    D.5次


    正确答案:C
    本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a(2)以及对象数组b[3],共执行4次构造函数,对象指针不调用构造函数。所以本题答案为c。

  • 第14题:

    下列程序的输出结果为: bjectid=O biectid=1 请将程序补充完整。 include using namesp

    下列程序的输出结果为:

    bjectid=O

    biectid=1

    请将程序补充完整。

    include<iostream>

    using namespace std;

    class Point

    {

    public:

    Point(int xx=0,int yy=0){X=xx;Y=yy;countP++;}

    ~Point(){countP--;}

    int GetX(){return X;}

    int GetY(){return Y;}

    static void GetC(){cout<<"Object id="<<countP<<endl;}

    private:

    int X,Y;

    static int countP;

    };

    ______//静态数据成员的初始化

    int main()

    {

    Point::GetC();

    Point A(4,5);

    A.GetC();

    return 0;

    }


    正确答案:int tPoint::countP=0;
    int tPoint::countP=0; 解析:此题考查的是类中静态数据成员的初始化,静态数据成员初始化的一般格式:数据类型类名::静态数据成员名=初始值,且初始化时前面不加关键字static。分析题目,首先调用构造函数,然后输出countP的值,所以couatP的初始值应设置为0,即横线处填入int Point::countP=0;。

  • 第15题:

    有如下程序:

    #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.程序编译时语句③出错


    正确答案:A

  • 第16题:

    下列程序的输出结果为 Object id=0 Object id=1 请将程序补充完整。 include using na

    下列程序的输出结果为

    Object id=0

    Object id=1

    请将程序补充完整。

    include <iostream>

    using namespace std;

    class Point

    {

    public:

    Point(int xx=0,int yy=0) {X=xx;Y=yy;countP++;}

    ~Point(){countP--;}

    int GetX(){return X;}

    int GetY(){return Y;}

    static Void GetC(){cout<<"Object id="<<countP<<endl;}

    private:

    int X,Y;

    static int countP;

    };

    ______ //静态数据成员的初始化

    int main ()

    {

    Point::GetC();

    Point A(4,5);

    A.GetC();

    return 0;

    }


    正确答案:int Point::countP=0;
    int Point::countP=0; 解析:本题考核静态数据成员的定义与使用方式。空格处填入的是静态数据成员的初始化。程序的结果输出中"Object id=0"表示静态数据成员countP的初始值是0。

  • 第17题:

    有以下程序:includeusing namespace std;definePl 3.14Class Point{private:int x,y

    有以下程序: #include<iostream> using namespace std; #definePl 3.14 Class Point {private: int x,y; public: Point(int a,intB) {X=a; y:b;} int getx() <return x;} int gety() {return y;}}; class Circle:public Point {pri

    A.314

    B.157

    C.78.5

    D.153.86


    正确答案:A
    解析: 本程序设计了一个点类Point,包含了横,纵两个坐标数据x和y,由它派生出了圃类Circle,并加入了新的数据成员,即一个半径r和一个求圆面积的函数成员area。在主函数main中,首先定义了一个圃Circle类的对象c1,并通过它的构造函数初始化其数据成员。由此可知,其半径r的值为10,所以其面积为PI*10*10=314,即对象c1的函数成员area的返回值为314。

  • 第18题:

    有如下程序:include using namespace std;class point{intx,y;public:point( int vx,

    有如下程序:#include <iostream>using namespace std;class point{ int x, y;public: point( int vx, int vy ) { x = vx; y = vy; } point ( ) x = 0; y= 0; } point operator+( point p1 ) { point p; int px = x+ p1.x; int py = y + p1.y; return point( px, py ); point operator-( point p1 ) { point p; int px = x -p1.x; int py = y - p1.y; return point ( px, py ); } void print() { cout<<x<<" , "<<y<<end1; }};int main (){ point p1(10, 10 ), p2( 20, 20 ); p1 = p1 - p2; p1.print (); return 0;} 执行后的输出结果是

    A.10,10

    B.20,20

    C.10,20

    D.30,30


    正确答案:D
    解析:本题主要考查C++中运算符重载的机制与实现。运算符重载函数一般分为成员函数形式和友元函数形式,这两种形式都可以访问类中的私有成员。本题中的运算符重载形式为成员函数形式。程序在类point中声明了私有数据成员int x和 int y,并定义了两种形式的构造函数以完成对对象的初始化;之后,程序对运算符“+”进行了重载,另其输入参数为类point的对象,输出为操作符“+”右侧该对象的私有数据成员x和y与操作符“+”左侧同类型对象的私有数据成员x和y的加和:print()函数则输出对象中数据成员的值。程序main()函数中,实例化了类point的两个对,象p1和p2,并完成对对象的初始化.在语句“p1= p1+p2;”中,由于操作符“+”左右两端的操作数为point类的对象,复合类point定义中的操作符“+”的重载函数,因此程序将调用重载后的操作符函数,并返回两point对象数据成员的加和值,覆盖对象p1的数据成员.因此print()函数输出对象p1的数据成员值己应该为:x=10+20=30,y=10+20=30

  • 第19题:

    有如下程序: include using namespace std; class point {int x,y; public:point( i

    有如下程序: #include <iostream> using namespace std; class point { int x, y; public: point( int vx, int vy ) { x = vx; y = vy; } point ( ) { x = 0; y = 0; } point operator+( point pl ) { point p; int px = x + p1.x; int py = y + p1.y; return point( px, py ); } point operator-( point p1 ) { point p; int px = x - p1.x; int py = y - p1.y; return point( px, py ); } void print() { cout<<x<<", "<<y<<end1; } }; int main () { point pl ( 10, 10 ), p2 ( 20, 20 ); p1 = p1 + p2; p1.print (); return 0; } 执行后的输出结果是( )。

    A.10,10

    B.20,20

    C.10,20

    D.30,30


    正确答案:D
    解析:本题主要考察C++中运算符重载的机制与实现。运算符重载函数一般分为成员函数形式和友元函数形式,这两种形式都可以访问类中的私有成员。本题中的运算符重载形式为成员函数形式。程序在类point中声明了私有数据成员intx和inty,并定义了两种形式的构造函数以完成对对象的初始化:之后,程序对运算符“+”进行了重载,令其输入参数为类point的对象,输出为操作符“+”右侧该对象的私有数据成员x和y与操作符“+”左侧同类型对象的私有数据成员x和y的两数之和;print()函数则输出对象中数据成员的值。主函数中,实例化了类point的两个对象p1和p2,并完成对对象的初始化。在语句“p1=p1+p2;”中,由于操作符“+”左右两端的操作数为point类的对象,复合类point定义中的操作符“+”的重载函数,因此程序将调用重载后的操作符函数,并返回两point对象数据成员的加和值,覆盖对象p1的数据成员。因此print()函数输出对象p1的数据成员值应该为:x=10+20=30,y=10+20=30。

  • 第20题:

    有如下程序:includeusing namespace std;class point{int x,y;public:point(int vx,i

    有如下程序: #include<iostream> using namespace std; class point { int x,y; public: point(int vx,int vy) { x=vx; y=vy; } point() { x=0; y=0; } point operator+(point p1) { point p; int px=x+p1.x; int py=y+p1.y; return point(px,py); } point operator-(point p1) { point p; int px=x-p1.x; int py=y-p1.y; return point(px,py); } void print() { cout<<x<<","<<y<<end1; } }; int main() { point p1(10,10),p2(20,20); p1=p1+p2; p1.print(); retrun 0; } 执行后的输出结果是

    A.10,10

    B.20,20

    C.10,20

    D.30,30


    正确答案:D
    解析:本题主要考查C++中运算符重载的机制与实现。运算符重载函数一般分为成员函数形式和友元函数形式,这两种形式都可以访问类中的私有成员。本题中的运算符重载形式为成员函数形式。程序在类point中声明了私有数据成员intx和inty,并定义了两种形式的构造函数以完成对对象的初始化;之后,程序对运算符“+”进行了重载,另其输入参数为类point的对象,输出为操作符“+”右侧该对象的私有数据成员x和y与操作符“+”左侧同类型对象的私有数据成员x和y的加和:print()函数则输出对象中数据成员的值。程序main()函数中,实例化了类point的两个对象p1和p2,并完成对对象的初始化。在语句“p1=p1+p2;”中,由于操作符“+”左右两端的操作数为point类的对象,复合类point定义中的操作符“+”的重载函数,因此程序将调用重载后的操作符函数,并返回两point对象数据成员的加和值,覆盖对象p1的数据成员。因此print()函数输出对象p1的数据成员值应该为:x=10+20=30,y=10+20=30

  • 第21题:

    有以下类定义: class Point { public: Point(int x=0,int y=0){_x=x; _y=y;} void Move(int x Off, int y Off) {_x+=x Off; _y+=y Off; } void Print() const { cout <<'(' << _x << ',' << _y << ')'<< end 1;} private: int _x,_y; }下列语句中会发生编译错误的是______。

    A.Point pt; pr. Print();

    B.const Point pt; pt. Print();

    C.Point pt; pt. Move(1,2);

    D.const Point pt; pt. Move(1,2);


    正确答案:D
    解析:const修饰符改变值出错。

  • 第22题:

    若有以下程序:include using namespace std;define PI 3.14class Point {private: i

    若有以下程序: #include <iostream> using namespace std; #define PI 3.14 class Point { private: int x,y; public: Point(int a,int B) { x=a; y=b; } int getx() { return x; } int gety() { reurn y; } }; class Circle: public Point { private: int r; public: Circle(int a,int b.int C) :Point(a,B) r=c; int getr() { return r; } double area() { return PI*r*r; } }; int main() { Circle cl(5,7,10); cout<<c 1 .area()<<end1; return 0; } 程序执行后的输出结果是

    A.314

    B.157

    C.78.5

    D.153.86


    正确答案:A
    解析:本题考核派生类的定义和应用。本程序设计了一个点类Point,包含了横、纵两个坐标数据x和y,由它派生出了圆类Circle,并加入了新的数据成员,即一个半径数据r和一个求圆面积的函数成员area。在主函数main中,首先定义了一个圆Circle类的对象c1,并通过它的构造函数初始化其数据成员。由此可知,其半径r的值为10,所以其面积为PI*10*10=314,即对象c1的函数成员area的返回值为314。

  • 第23题:

    根据程序中的注释将下列缺失部分补充完整。

    class Point{

    int x,y; //点的x和y坐标

    public:

    Point(int xx=0,int yy=0):x(xx),y(yy){}

    };

    class Circle{

    Point center;//圆心位置

    int radius; //半径

    public: //利用cx和cY分别初始化圆心的x和y坐标

    circle(int cx,int cy,int r): 【 】 ,radius(r){}

    void area()(cout<<3.14159*radius*radius<<end1;)

    };


    正确答案:center(cxcy)
    center(cx,cy) 解析:center在类Circle中声明为成员对象。成员对象的初始化工作是在成员初始化列表中完成的。初始化的一般格式如下:
    <类名>(<总形参表>):<成员对象1>(<形参表1>),<成员对象2>(<形参表2>),…
    {

    }