有如下程序:#include<iostream>using namespace std;class Point{public:    static int number;public:    Point(){number++;}    ~Point(){n

admin2017-10-17  26

问题 有如下程序:#include<iostream>using namespace std;class Point{public:    static int number;public:    Point(){number++;}    ~Point(){number--;}};int Point::number=0;void main(){    Point*ptr;    Point A,B;    {        Point*ptr_point=new Point[3];        ptr=pb_point;     }    Point C    cout<<Point::number<<endl;    delete[]ptr;     }运行时输出的结果是

选项 A、3
B、4
C、6
D、7

答案C

解析 本题考查的知识点是:静态成员,对象的构造,对象的生存周期。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。本题的Point类中就定义了一个静态成员变量 number。其初始值为0,每次构造则自动增1,析构则自动减1,所以number是Point类对象的计数值。在主函数中,第1行定义了1个Point类型指针ptr,这并不会构造 Point类对象,因此number值为0;第2行定义了2个Point对象,所以此时number值为2;第3~6行是一个语句块,其中通过new运算符又定义了1个包含3个Point对象元素的数组,由于是动态创建的,所以其生命周期只能通过delete运算符来结束,否则会一直占据内存直到程序结束,所以现在number的值为5:第7行定义了1个 Point对象C,number的值变为6;第8行输出number的内容,所以最后输出的结果是6。故本题应该选择C。
转载请注明原文地址:https://jikaoti.com/ti/GIt0FFFM
0

最新回复(0)