问题描述
- c++面向对象问题,大神回答
-
struct A{
static int x;
int y;
public:
operator int( ){ return x-y; }
A operator ++(int){ return A(x++, y++); }
A(int x=::x+2, int y=::y+3){ A::x=x; A::y=y; }
int &h(int &x);
};实例化一个A a(4,7);
static int x a.x A::x
中x的关系
int y a.y A::y
中y的关系就说一下他们是否相等即可
谢谢大神
解决方案
x 是类的x,x 不属于对象,而y才是属于对象,如果定义多个对象,那么每个对象的y值是不同的,而x值就是相同的,因为x是属于类的。。。
解决方案二:
int x;//应该有这个全局变量吧
struct A{
static int x;//所有的A对象共用这个x
int y;
public:
operator int( ){ return x-y; }
A operator ++(int){ return A(x++, y++); }
A(int x=::x+2, int y=::y+3){ A::x=x; A::y=y; }//1、形参x,y在构造函数是可见的,为了使用其余两种,必须加修饰符
//即 ::x是全局表量x; A::x是A类的私有变量x
int &h(int &x);
};
实例化一个A a(4,7);
static int x a.x A::x //三者相同,但是a.x是错误的,x是私有变量
中x的关系
int y a.y A::y//同理a.y也是错误的
中y的关系
时间: 2024-12-01 17:00:50