using namespace std;
class father{
public:
// static int static_inter = -1;
static int static_inter;
public:
static int get_static_inter(){
return static_inter;
}
static void set_static_inter(int i){
static_inter = i;
}
void print(){
cout << "Father print " << endl;
}
};
class child:public father{
public:
static int static_inter;
void print(){
cout << "Child print " << endl;
}
static void set_static_inter(int i){
static_inter = i;
}
};
int father::static_inter = 50;
int child::static_inter = 100;
int main(int argc, char *argv[])
{
child ch;
father::set_static_inter(5);
child::set_static_inter(101);
cout << "fa static: " << father::get_static_inter() << endl;
cout << "fa static inter: " << father::static_inter << endl;
cout << "ch static: " << child::static_inter << endl;
cout << "ch static: " << child::father::static_inter << endl;
}
执行结果:
fa static: 5
fa static inter: 5
ch static: 101
ch static: 5
总结:
1,静态成员必须类外显示初始化,不然会报错。
2,不论静态与非静态,对于子类和父类都有定义的情况,尊从重定义原则。--子类没有,用父类的,子类有,各用各的。不管子类有没有,都可以通过类名的方式调用父类的。