怎么做招聘网站,网上商城系统概述,网站建设响应技术,新会网站建设问题#xff1a;继承中同名的静态成员在子类对象如何访问#xff1f;
静态成员和非静态成员出现同名#xff0c;处理方式一致
1.访问子类同名成员 直接访问即可 2.访问父类同名成员 需要加作用域
首先我们先介绍一下静态成员属性的特点#xff1a; 1.编译阶段分配内存 2…问题继承中同名的静态成员在子类对象如何访问
静态成员和非静态成员出现同名处理方式一致
1.访问子类同名成员 直接访问即可 2.访问父类同名成员 需要加作用域
首先我们先介绍一下静态成员属性的特点 1.编译阶段分配内存 2.所有对象共享同一份数据 3.类内声明类外初始化
一、同名静态成员属性 代码如下
#include iostream
using namespace std;
//继承中的同名静态成员处理方式class Base {public:static int m_A;
};
int Base::m_A 100;class Son: public Base {public:static int m_A;
};
int Son::m_A 200;//同名静态成员属性
void test01() {Son s;//1.通过对象访问cout Son 下 m_A s.m_A endl;cout Base 下 m_A s.Base::m_A endl;//2.通过类名访问cout Son 下 m_A Son::m_A endl;cout Base 下 m_A Base::m_A endl;//第一个::代表通过类名方式访问第二个::代表访问父类作用域下cout 通过子类访问父类m_A Son::Base::m_A endl;}int main() {test01();return 0;
}二、同名静态成员函数 代码如下
#include iostream
using namespace std;
//继承中的同名静态成员处理方式class Base {public:static int m_A;static void func() {cout Base static void func() endl;}static void func(int a) {cout Base static void func(int a) endl;}
};
int Base::m_A 100;class Son: public Base {public:static void func() {cout Son static void func() endl;}static int m_A;
};
int Son::m_A 200;//同名静态成员属性
void test01() {Son s;//1.通过对象访问s.func();s.Base::func();//2.通过类外访问Son::func();Base::func();Son::Base::func();Son::Base::func(100);}int main() {test01();return 0;
}如果子类出现与父类同名的一个静态成员函数则父类中所有的与子类同名的函数都会被隐藏掉调用父类同名函数时前面需要加作用域才能调用。