问题 单项选择题

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

A.3

B.4

C.6

D.7

答案

参考答案:C

解析: 只有在创建对象时才会调用类的构造函数,在定义指针时不会调用构造函数,只有给指针new一个地址时会调用构造函数,所以本程序中一共生成了6个Point对象(A,B,C,newPoint[3])。number作为静态数据成员,被同一类的不同对象所共享,故结果为6。

选择题
问答题