#include <iostream>
using namespace std;
class A
{
public:
static int a;
void init(){a=1;}
A(int a=2){init();A::a++;}
};
int A::a=0;
A obj;
这样输出结果为2
静态是类的全局变量,不属于某个对象而属于某个类所拥有,不像普通的变量只属于一个对象拥有,这就是为什么在定义和调用
都要加类的名称A::了,没有加类的名称A::则不是调用你定义的static int a静态变量,我感觉这个例子不好,为什么要用静态呢?
#include <iostream>
using namespace std;
class A
{
private:
int a;
public:
int geta()const{return a;}
void init(){a=1;}
A(int a=2){init();a++;cout<<a<<endl;}
};
A obj;
int main()
{
cout<<obj.geta();
return 0;
}
这样看上去更形象直观,这个例子很明确的告诉我们了,参数里面定义的变量a到了函数体中调用则会是参数中的变量a,
而不是对象中的变量(如果参数没有与对象中的变量重名的话那么就是调用对象中的变量).
如果要调用对象中的变量怎么办呢?那就通过对象里的公有函数调用geta(),比如
#include <iostream>
using namespace std;
class A
{
private:
int a;
public:
int geta()const{return a;}
void init(){a=1;}
A(int a=2){init();a++;cout<<a<<endl;cout<<geta()<<endl;}
};
A obj;
int main()
{
cout<<obj.geta();
return 0;
}