保持更改的类变量

时间:2014-04-29 17:47:30

标签: c++ class

我想知道是否有任何方法可以在类中保留更改的变量。例如:

class Numbers{
  int x;

  Numbers();

public:
  void set(int y);
  void print();
};

void Numbers::set(int y){
  x=y;
}

void Numbers::print(){
  cout<<x<<endl;
}


int main(){
  Numbers x;
  x.set(3);
  x.print();

  Numbers x2;
  x2.print(); // here I want to display "3", not 0 as default

  return 0;
}

但是我想要在类之外使用全局变量作为临时变量。

3 个答案:

答案 0 :(得分:4)

您必须定义变量static

class Numbers{
    static int x;

public:
     static void set( int i ){ x = i; }
     void print(){ std::cout << x << std::endl; } // maybe this should be static
};

int Numbers::x = 0;


int main()
{
    Numbers x1, x2;
    x1.print();  // prints 0

    x1.set( 1 );
    // above is same as
    Numbers::set( 1 );

    x1.print();  // prints 1

    x2.print();  // prints 1
} 

答案 1 :(得分:2)

首先,您的代码将不会被编译,因为您将该类的默认构造函数声明为private并且未定义它。

至于您的问题,那么您可以使用静态数据成员。例如

#include <iostream>

class Numbers
{
private:
  static int x;
public:
  Numbers() {}

  void set( int y ) { x = y; }
  void print() const { std::cout << x << std::endl; }
};

int Numbers::x;

int main()
{
   Numbers x;
   x.set( 3 );
   x.print();

   Numbers x2;
   x2.print();
}

这些成员函数也可以定义为静态成员函数。

答案 2 :(得分:0)

你可以像这样声明

static int myVariable = 0;

以下是静态变量的一些信息

  

在函数内部使用static是最简单的。它只是意味着   一旦变量初始化,它就会保留在内存中   直到该计划结束。你可以把它想象成那样的   变量坚持,保持其价值,直到程序   完全结束。例如,您可以使用静态变量进行记录   简单地通过包含函数来调用函数的次数   lines static int count = 0;和计数++;在功能里面。因为   count是一个静态变量,行&#34; static int count = 0;&#34;只会   执行一次。每当调用该函数时,count都会有   分配给它的最后一个值。

你可以在这里继续阅读:

http://www.cprogramming.com/tutorial/statickeyword.html