C++继承同名静态成员处理
问题:继承中同名的静态成员在子类对象如何访问?
静态成员和非静态成员出现同名,处理方式一致
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;
}
如果子类出现与父类同名的一个静态成员函数,则父类中所有的与子类同名的函数都会被隐藏掉,调用父类同名函数时前面需要加作用域才能调用。
C++继承同名静态成员处理相关推荐
- c/c++入门教程 - 2.4.6 继承、公共继承、保护继承、私有继承、virtual虚继承(概念、语法、方式、构造和析构顺序、同名成员处理、继承同名静态成员处理、多继承语法、菱形继承、钻石继承)
目录 4.6 继承 4.6.1 继承的基本语法 4.6.2 继承方式 4.6.3 继承中的对象模型 4.6.4 继承中构造和析构顺序 4.6.5 继承同名成员处理方式 4.6.6 继承同名静态成员处理 ...
- C++继承机制(二)——继承中的构造和析构顺序、继承同名成员的处理方式
目录: C++继承机制(一)--基本语法.三种继承方式.继承哪些数据 C++继承机制(二)--继承中的构造和析构顺序.继承同名成员的处理方式 C++继承机制(三)--多继承.菱形继承.虚继承原理 本篇 ...
- c++中的继承--2(继承中的析构函数和构造函数,继承中同名成员,继承中静态成员)
继承中的构造函数和析构函数 继承中的构造和析构顺序 子类创建对象时,先调用父类的构造,然后调用自身构造 析构顺序与构造顺序相反 子类不会继承父类的构造函数和析构函数 如果父类中没有合适默认构造,那么子 ...
- C++_类和对象_C++继承_同名静态成员处理_父类子类中存在同名静态成员变量_同名静态成员函数时的处理方法---C++语言工作笔记066
然后我们再去看,同名静态成员的处理. 如果我们父类中,和子类中,同时存在一样名字的,静态成员变量,和成员函数, 我们调用子类对象.变量的时候,调用的是子类中的变量,还是父类中的变量呢? 我们写代码去验 ...
- C++>继承,继承方式及其比较,子类和父类对象指针,派生类的默认成员函数,虚继承,继承与友元,继承与静态成员
继承 继承的概念与定义 概念: 继承是指一个子类(或称为派生类)继承父类(或称为基类)的特征(属性和操作).继承是面向对象程序设计时实现代码复用的重要手段,它允许在原有的类的基础上进行扩展,增加功能, ...
- C++继承同名成员处理方式
C++继承同名成员处理方式 继承同名成员处理方式 问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢? 示例 总结 继承同名成员处理方式 问题:当子类与父类出现同名的成 ...
- C++和Java中类继承同名函数的区分
C++和Java的派生类对于与基类同名的函数有着不同的处理方式. 在C++中,假设基类中有一个dis()函数,而派生类又定义了一个dis()函数,这时候在派生类对象中会将基类的dis()函数屏蔽掉,上 ...
- 类和对象—继承—同名成员处理
静态同名成员和非静态同名成员 静态同名成员: 1.通过对象访问 2.通过类名访问 #include <iostream> using namespace std;class BaseCla ...
- C++从0到1的入门级教学(十三)——继承
文章目录 13 继承 13.1 继承的基本语法 13.2 继承方式 13.3 继承的对象模型 13.4 继承中构造和析构顺序 13.5 继承同名成员处理方式 13.6 继承同名静态成员处理方式 13. ...
最新文章
- svn服务器搭建和使用 ubuntu_Ubuntu下 SVN 服务器搭建及使用
- 又踩到Dubbo的坑,但是这次我笑不出来
- SQL Server Mysql 对null值理解的不同
- Dataset:数据集集合(CV方向数据集)-常见的计算机视觉图像数据集大集合包括表面缺陷检测数据集(持续更新)
- 硬盘安装WIN7方法
- NetCore2.x 使用Log4Net(一)
- 一队老耗子,每个月都生一对小耗子,小耗子长3个月,第四个月开始变成老耗子开始生, 		// 假设所有耗子都不死,请问20个月之后共有多少只耗子?...
- ReentrantLock与synchronized的区别(最直观)
- 使计算机进入休眠状态
- Oracle数据库的备份方式
- oracle imp 换表空间,imp导入切换表空间
- 微信小程序解决 加载图片出现渲染层网络层错误
- JetpackCompose从入门到实战学习笔记2——Modifier的简单使用
- 字符串分割(split),将字符串按照指定字符进行分割。split(String regex)和split(String regex, int limit)
- 时间段查询将00:00:00更换成23:59:59
- 用友通-财务报表维护
- ADAMS仿真软件教程--模型的相关操作
- 表设计工具EZDML
- 西门子PLC远程下载S7-1200,S7-1500,S7-200SMART,WINCC远程下载
- Java自我学习第三章基础数据类型
热门文章
- IOS之提示control may reach end of non-void function
- Android之用Intent.FLAG_ACTIVITY_CLEAR_TOP解决界面重复拉起问题
- Android图片上倒计时,Android自定义照相机倒计时拍照
- 直男的浪漫有多可怕?
- 国家特级数学教授李毓佩:我们欠孩子真正的数学阅读 !
- linux 系统迁移到固态硬盘,把Debian GNU/Linux迁移到SSD上
- java赋值语句_java并发编程之原子性问题
- bread是可数还是不可数_雅思官方语法教程之——这个名词到底可不可数?
- json 格式化工具_如何在命令行中优雅地处理JSON
- android canvas_Android 如何实现气泡选择动画