有以下程序: #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变量,每次程序退出其作用域时将自动消失。所以其值不能保留下来。