单选题 有如下程序 #include<iostream> using namespace std; int i=1; class Fun{ public: static int i; int value(){return i-1;} int value()const{return i+1;} }; int Fun::i=2; int main(){ int i=3; Fun fun1; const Fun fun2; return 0; } 若程序的输出结果是: 123 则程序中下划线处遗漏的语句是( )。
【正确答案】 A
【答案解析】解析:此题考查的是常成员函数。const关键字可以用于参与重载函数的区分,此时常对象调用常成员函数,一般对象调用一般成员函数,当类中只有一个常成员函数时,一般对象也可以调用该常成员函数。本题中,通过fun1调用value()函数时,是调用前一个,而通过fun2调用value()函数是调用后一个;另外,value()函数中访问的i是类中定义的数据成员i,全局变量i在类中被“屏蔽”。fun1.value()输出i-1=2-1=1;fun2.value()调用后一个value()函数输出i+1=2+1=3;Fun::i是通过类名直接访问类的静态数据成员i的值,即2;所以正确的输出顺序是A选项。