有如下程序 #inc1ude<iostream> using namespace std; int i=1; c1ass Fun{ public: static int i; int value(){

admin2017-06-18  26

问题 有如下程序
    #inc1ude<iostream>
    using namespace std;
    int i=1;
    c1ass Fun{
    public:
    static int i;
    int value(){return i—l,}
    int value( )const{ return i+1;}
    };
    int Fun::1=2;
    int main(){
    int i=3;
    Fun funl;
    const Fun fun2;
    retum 0;
    }
    若程序的输出结果是:
    123
    则程序中下划线处遗漏的语句是(    )。

选项 A、cout<<funl.value()<<Fun::i<<fun2.value();
B、cout<<Fun::i<<funl.value()<<fun2.value();
C、cout<<funl.value()<<fun2.value()<<Fun::i;
D、cout<<fun2.value()<<Fun::i<<funl.value();

答案A

解析 此题考查的是常成员函数。Const关键字可以用于参与重载函数的区分,此时常对象调用常成员函数,一般对象调用一般成员函数,当类中只有一个常成员函数时,一般对象也可以调用该常成员函数。本题中,通过fun1调用value()函数时,是调用前一个,而通过fun2调用value()函数是调用后一个:另外,value()函数中访问的i是类中定义的数据成员i,全局变量i在类中被“屏蔽”。fun1.value()输出1—1=2—1=1;fun2. value()调用后一个value()函数输出i+1=2+1=3;Fun::i是通过类名直接访问类的静态数据成员i的值,即2;所以正确的输出顺序是A选项。
转载请注明原文地址:https://kaotiyun.com/show/GQAp777K
0

最新回复(0)