当前位置: 首页 > news >正文

C++核心编程_继承同名静态成员处理方式

问题:继承中同名的静态成员在子类对象上如何进行访问?

静态成员和非静态成员出现同名,处理方式一致

  • 访问子类同名成员 直接访问即可

  • 访问父类同名成员 需要加作用域

class Base {
public:static void func() {cout << "Base - static void func()" << endl;}static void func(int a) {cout << "Base - static void func(int a) "<< a << endl;}static int m_A;
};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() {//通过对象访问cout << "同名成员属性,通过对象访问" << endl;Son s;cout << "Son 下 m_A = " << s.m_A << endl;cout << "Base 下 m_A = " << s.Base::m_A << endl;//通过类名访问cout << "同名成员属性,通过类名访问" << endl;cout << "Son 下 m_A = " << Son::m_A << endl;cout << "Base 下 m_A = " << Son::Base::m_A << endl;}// 同名成员函数
void test02() {// 通过对象访问cout << "通过对象访问" << endl;Son s;s.func();s.Base::func();//出现同名,子类会隐藏掉父类中所有同名成员函数,需要加作作用域访问s.Base::func(100);// 通过类名访问cout << "通过类名访问" << endl;Son::func();Son::Base::func();Son::Base::func(100);}int main() {//test01();test02();system("pause");return 0;}

总结:同名静态成员处理方式和非静态处理方式一样,只不过有两种访问的方式(通过对象 和 通过类名)

相关文章:

  • 深入理解链接与加载:从静态库到动态库的全流程解析
  • 【第八篇】 SpringBoot高级配置(配置篇)
  • 【SpringBoot自动化部署方法】
  • 图像超分辨率
  • 深度学习模块缝合
  • 线程与线程池
  • Pandas-如何正确将两张数据表进行合并
  • 碳排放智能分析与优化系统:工业减排的革命性突破
  • 高保真组件库:下拉框
  • 面试实例题
  • 【P2P】低延迟直播(尤其是 P2P 实时分发)常用的 x264 编码参数示例
  • 小游戏不能玩了?最好用flash扩展程序
  • 计算机网络笔记(三十)——5.2用户数据报协议UDP
  • 什么是贫血模式
  • FastAPI实战起步:从Python环境到你的第一个“Hello World”API接口
  • 哈希map中不能将数组作为键的原因 leetcode49
  • JavaScript 内置对象全解析
  • TM中,return new TransactionManagerImpl(raf, fc);为什么返回是new了一个新的实例
  • 《从函数模板到类模板:OP泛型编程进化论》
  • Python项目的构建和部署方案推荐
  • 简单房地产网站/优化大师官方免费下载
  • 动态网站制作新手教程/培训方案
  • 2016网站建设总结/百度关键词如何优化
  • 创意集团网站建设/seo快速排名软件平台
  • 自己做一个网站一年的费用/推广方案如何写
  • 建设网站以后怎么让百度收录呢/工作手机