【单选题】有如下程序:#include<iostream>using namespace std;class Point{public:static int number;public:Point(){number++;}~Point(){number--;}};int Point::number=0;void main(){Point*ptr;PointA,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。
document.getElementById("warp").style.display="none";
document.getElementById("content").style.display="block";
查看试题解析出处>>
发布评论 查看全部评论