我想知道是否有任何方法可以在类中保留更改的变量。例如:
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;
}
但是我不想要在类之外使用全局变量作为临时变量。
答案 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都会有 分配给它的最后一个值。
你可以在这里继续阅读: