静态成员函数特点:
子对象与父对象共享了父对象所产生的静态成员。从下面的代码中可以看出子对象和父对象共享了一个num.
声明和定义的区别:声明不分配存储空间,而定义需要分配存储空间。
#include <iostream>
using namespace std;
//static
class Object
{
private:
static int num;//声明
int value;
public:
Object(int x=0) :value(x) {cout<<"Object:"<<++num<<endl;}
~Object() {cout<<"Object"<<num--<<endl;}
};
int Object::num=0;//定义
class Base:public Object
{
public:
Base(int x):Object(x) {}
~Base() {}
};
class Test:public Object
{
public:
Test(int x=0):Object(x) {}
~Test(){}
};
int main()
{
Base base1(1);
Base base2(2);
Base base3(3);
Test test1(1);
Test test2(2);
Test test3(3);
return 0;
}