有如下程序: #include using namespace std; class A { public: static int a; void init() { a = 10; } A(int a = 5) { init

admin2015-06-27  8

问题 有如下程序:
#include
using namespace std;
class A {
public:
     static int a;
     void init() { a = 10; }
     A(int a = 5) { init(); a+=10; }
};
int A::a = 0;
A obj;
int main()
{
     cout << obj.a;
     return 0;
}
运行时输出的结果是

选项 A、0
B、5
C、15
D、10

答案D

解析 静态数据成员独立于任何对象而存在,不是类对象的组成部分,普通成员函数可以引用静态数据成员。程序定义了类A,并在A的定义体外初始化A的静态数据成员a=0,构造函数A(int)中的形参a与A::a属于不同的变量,在函数A(int)中,形参a屏蔽了A::a,所以A(int)中引用的变量a是形参,而不是A::a,对a的任何操作都不影响A::a,而成员函数init中引用的是A::a,语句a=10是将A::a赋值为10,所以输出obj.a其实是输出A::a,结果为10;答案为D。
转载请注明原文地址:https://jikaoti.com/ti/RkXiFFFM
0

最新回复(0)