1.静态变量
子类继承父类,是可以继承到父类的静态变量的
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class father
{
public:
static int m_a;
};
int father::m_a = 10;
class son :public father
{
};
void test()
{
cout << "不生命作用域的情况下默认调用父类的静态成员变量值:" << son::m_a << endl; //输出父类的m_a值:10
}
int main()
{
test();
return 0;
}
当子类中也声明了同名的静态变量时,会根据就近原则默认调用子类声明中创建的静态变量:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class father
{
public:
static int m_a;
};
int father::m_a = 10;
class son :public father
{
public:
static int m_a;
};
int son::m_a = 20;
void test()
{
cout << "当子类也创建了同名的静态变量时默认调用子类中的静态变量值:" << son::m_a << endl; //输出子类定义的m_a值:20
cout << "调用父类中创建的,m_a值:" << father::m_a << endl; //输出父类定义的m_a值:10
}
int main()
{
test();
return 0;
}
2.静态成员函数:
当子类中不声明同名的静态成员函数时,默认调用父类的静态成员函数
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class father
{
public:
static void func()
{
cout << "调用父类的静态成员函数" << endl;
}
};
class son :public father
{
};
void test()
{
son::func();
}
int main()
{
test();
return 0;
}
在函数前面加作用域效果如下:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class father
{
public:
static void func()
{
cout << "调用父类的静态成员函数" << endl;
}
};
class son :public father
{
public:
static void func()
{
cout << "调用子类的静态成员函数" << endl;
}
};
void test()
{
father::func();
son::func();
}
int main()
{
test();
return 0;
}