我的问题是,如何存储对象的状态,以便以后可以在不使用全局变量的情况下访问它?这是一个例子:
Circle类可以通过使用直径,x和y作为全局来存储其状态.然后可以使用方法修改和检索这些值.
有没有办法在不使用首选的全局变量的情况下完成上述 *** 作?
谢谢
编辑:
我把全局变量与成员变量混淆了,这就是问题所在.现在我对提出这个问题感到非常愚蠢,但希望这会有助于其他人.
使状态变量成员变量,以便每个类实例都有自己的版本.这是面向对象编程的原则之一.
如果您需要在类的所有实例之间共享变量,请将它们设为静态成员变量.这样你就知道只有你的对象可以访问它们(如果你选择使用它们的私有或受保护的可见性),并且没有其他人不知道他们正在做什么将与他们搞混.
例:
class Circle {public: Circle(double x,double y,double diameter) : x(x),y(y),diameter(diameter) { } double X() const { return x; } double Y() const { return y; } double diameter() const { return diameter; } ...private: double x,y,diameter;};
现在当我们有两个圈子时,它们表现得很好:
Circle c1(4.0,4.0,6.0);Circle c2(1.0,6.0,3.0);cout << c1.X() << endl << c2.X() << endl;// prints 4 and 1
但如果我们这样做,使用全局变量:
// BAD,DON'T DO THISdouble x = 0,y = 0,diameter = 0;class Circle {public: Circle(double _x,double _y,double _diameter) { x = _x,y = _y,diameter = _diameter; } double X() const { return x; } double Y() const { return y; } double diameter() const { return diameter; }};
当我们有两个圈子时:
Circle c1(4.0,3.0);cout << c1.X() << endl << c2.X() << endl;// prints 1 and 1
您创建的最后一个圆圈将覆盖所有其他圆圈的数据.如你所见,这不是一件好事.
总结以上是内存溢出为你收集整理的如何在不使用c中的全局变量的情况下存储对象的状态全部内容,希望文章能够帮你解决如何在不使用c中的全局变量的情况下存储对象的状态所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)