问题
单项选择题
有以下程序:#include <iostream>using namespace std;class sample{private: int x; static int y;public: sample(int a) ; static void print(sample s);};sample:: sample(int a) { x=a; y+=x;}void sample::print(sample s){ cout<< "x="<<s. x<<", y="<< y<<end1;}int sampte::y=0;int main(){ sample s1(10); sample s2(20); sample::print(s2); return 0;}程序运行后的输出结果是
A.x=10,y=20
B.x=20,y=30
C.x=30,y=20
D.x=30,y=30
答案
参考答案:B
解析: 本题考核静态数据成员和静态成员函数的应用。类sample中定义两个私有成员x和y,其中y为静态数据成员。并定义函数 print()为静态成员函数。在主函数中,定义对象s1(10)时,通过构造函数使对象s1的私有成员x=10,静态数据成员y=10。定义s2(20)时,通过构造函数使对象s2的私有成员x=20,静态数据成员y=10+20=30。程序最后调用静态成员函数print输出对象s2的私有成员x的值20,对象s1、s2共享的静态数据成员y的值30。