赞
踩
- #include <iostream>
- using namespace std;
-
- // 父类
- class Base07{
- public:
- static int m_a; // 静态成员,类内定义
- static void fun(){
- cout << "Base中的fun"<< endl;
- }
- static void fun(int a){
- cout << "Base中的fun(int a)"<< endl;
- }
- };
- int Base07::m_a = 10; // 静态成员,类外初始化
-
- // 子类
- class Son07 : public Base07{
- public:
- static int m_a; // 静态成员,类内定义
- static void fun(){
- cout << "son中的fun"<< endl;
- }
- };
- int Son07::m_a = 20; // 静态成员,类外初始化
-
- int main()
- {
- Son07 s1;
- // 静态成员变量
- // 同名成员,就近原则
- // 1.通过对象访问
- cout << "子类中的m_a: " << s1.m_a << endl;
- cout << "父类中的m_a: " << s1.Base07::m_a << endl;
-
- cout << "-----------------" << endl;
-
- // 2.通过类名访问
- cout << "子类中的m_a: " << Son07::m_a << endl;
- cout << "父类中的m_a: " << Son07::Base07::m_a << endl;
- cout << "父类中的m_a: " << Base07::m_a << endl;
-
- cout << "*****************" << endl;
- // 静态成员函数
- // 同名成员,就近原则
- // 1.通过对象访问
- s1.fun();
- s1.Base07::fun();
- cout << "-----------------" << endl;
- // 2.通过类名访问
- Son07::fun();
- Son07::Base07::fun();
- cout << "-----------------" << endl;
-
- // 子类中定义了和父类同名的成员函数,父类的同名成员函数都会被隐藏。可以通过作用域来调用
- // s1.fun(10); // 无法调用
- s1.Base07::fun(10);
-
- return 0;
- }
静态成员函数和非静态成员函数的共同点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。