问题 单项选择题

有以下程序: #include <iostream> using namespace std; class MyClass {int m; publ i c:static int n;MyClass ( ){ m = 0;}void setvalue(){ m++; n++;}void output (){ cout<<"m="<<m<<’’ , n="<<n<<end1;} }; int MyClass :: n=0; int main() { MyClass obj1, obj2; obj1.setvalue(); objl.output(); obj2.setvalue(); obj2.output(); return 0; }

A.m= 1 ,n= 1 <换行>m= 1 ,n=1

B.m= 1 ,n= 1 <换行>m=1 ,n=2

C.m=1,n=1<换行>m=2,n=1

D.m=1,n=1<换行>m=2,n=2

答案

参考答案:B

解析: 本题考核静态数据成员的应用。类中的数据成员n为静态变量,这种类型变量采用静态存储分配。当函数执行完后,返回调用点,该变量并不撤销,其值将继续保留。内部静态变量有隐含初始值0,并且只在编译时初始化一次。而类中的数据成员m为auto变量,每次程序退出其作用域时将自动消失。所以其值不能保留下来。

问答题
单项选择题