单选题
有如下程序:
#include<iostream>
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get(){return m;}
int get()const{return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
cout<<a.get()<<b.get();
return 0;
}
运行时的输出结果是______。
【正确答案】
B
【答案解析】[解析] 生成对象时,系统要先自动调用构造函数,初始化数据成员。注意,由于常对象不能被更新,所以,常对象只能调用常成员函数,不能调用其他成员函数;而一般对象既可以调用常成员函数,也可以调用一般成员函数。
const关键字可以用于参与对重载函数的区分。重载的原则是:常对象调用常成员函数,一般对象调用一般成员函数。当然,如果类中只有一个常成员函数时,一般对象也可以调用该常成员函数。所以,题中,一般对象a调用的是一般成员函数,输出m的值,即为3;而常对象b调用的是常成员函数,输出m+n的值,即为8。