问题
问答题
return 0;
答案
参考答案:正确的类Sample的定义为:
class Sample
{
private:
int x;
static int y;
public:
Sample(int a)
{
x=a;
y+=x;
}
static void print(Sample s)
{
cout<<"x"<<s.x<<",y="<<s.y<<end1;
}
int Sample::y=5;
解析: 类Sample的定义中有两处错误。
①在类Sample中定义了静态成员函数print()和静态数据成员y。静态成员函数可以直接对类的静态数据成员进行访问,但是不能对类中非静态成员进行直接访问。所以错误在于语句“cout<<"x="<<x<<",y="<<y<<end1;”,应该将其改为:“cout<<"x="<<s.x<<",y="<<s.y<<end1;”。
②C++中,静态数据成员的初始化与一般数据成员不同。静态数据成员初始化的格式如下:
<><>::<静态数据成员>=<值>;
所以语句“Sample::y=5,”缺少类型说明符int。应该改为:int Sample::y=5;