首页 > 编程语言 >【C++】继承 ⑩ ( 继承机制中的 static 静态成员 | 子类中访问父类静态成员的方法 )

【C++】继承 ⑩ ( 继承机制中的 static 静态成员 | 子类中访问父类静态成员的方法 )

时间:2023-10-29 16:39:22浏览次数:45  
标签:Parent 静态 子类 成员 private 继承 父类



文章目录

  • 一、继承机制中派生类中的 static 关键字
  • 1、子类继承父类静态成员
  • 2、父类静态成员访问控制权限的改变
  • 3、子类如何访问父类静态成员
  • 4、静态成员使用要点
  • 二、完整代码示例







一、继承机制中派生类中的 static 关键字




1、子类继承父类静态成员



子类继承父类静态成员 : 父类 ( 基类 ) 中 使用 static 关键字 定义的 静态成员变量 , 可以被所有的 子类 ( 派生类 ) 共享 ;



2、父类静态成员访问控制权限的改变



继承自 父类的 静态成员变量 , 仍然遵循 继承中 子类的 访问控制特性 ,

  • public 公有继承 : 父类成员 在 子类 中 , 访问控制权限 不变 , 共有 和 保护成员 可以在子类访问 , 私有成员不可在子类中访问 ;
  • 父类中的 public 成员 仍然是 public 成员 ;
  • 父类中的 protected 成员 仍然是 protected 成员 ;
  • 父类中的 private 成员 仍然是 private 成员 ;
  • protected 保护继承 : 父类成员 在 子类 中 , 访问控制权限 变为 protected , 私有成员不可在子类中访问 ;
  • 父类中的 public 成员 变为 子类中的 protected 成员 ;
  • 父类中的 protected 成员 仍然是 protected 成员 ;
  • 父类中的 private 成员 仍然是 private 成员 ;
  • private 私有继承 : 父类成员 在 子类 中 , 所有成员的访问控制权限 变为 private , 基类的 所有成员 都不可在子类中访问 ;
  • 父类中的 public 成员 变为 子类中的 private 成员 ;
  • 父类中的 protected 成员 变为 子类中的 private 成员 ;
  • 父类中的 private 成员 仍然是 private 成员 ;


3、子类如何访问父类静态成员



子类中 使用

父类类名 :: 静态成员名
Parent::c = 20;

子类类名 :: 静态成员名
Child::c = 40;

对象名.静态成员名
child.c = 30;

的方式 , 访问 继承自 父类的 静态成员 ;



4、静态成员使用要点



参考 【C++】静态成员变量 ( 静态成员变量概念 | 静态成员变量声明 | 静态成员变量初始化 | 静态成员变量访问 | 静态成员变量生命周期 ) 博客 , 静态成员需要

  • 先在类中定义静态变量 ,
class Parent {
public:
	// 父类静态成员
	static int c;
};
  • 然后在外部声明 并进行初始化 , 该步骤的作用是 告诉编译器 , 为 静态变量 分配内存 , 否则不分配内存 编译会报错 ;
// 声明并初始化静态变量
// 如果没有该操作 , 静态成员不可用
int Parent::c = 10;

之后 , 才能使用 类的 静态成员 , 如果没有在类外部初始化 , 该静态成员是无法使用的 ;






二、完整代码示例



代码示例 :

#include "iostream"
using namespace std;

class Parent {
public:
	// 父类静态成员
	static int c;
};

// 声明并初始化静态变量
// 如果没有该操作 , 静态成员不可用
// 主要作用是告诉编译器为静态变量分配内存
int Parent::c = 10;

class Child : public Parent {
public:
	void print()
	{
		// 类内部使用 Parent::c 或 c 访问静态变量
		cout << "Parent::c = " << Parent::c << " , c = " << c << endl;
	}
};

int main() {

	Child child;
	// 打印初始状态的值
	child.print();

	// 直接使用 父类
	Parent::c = 20;
	child.print();

	// 通过对象访问父类静态成员
	child.c = 30;
	child.print();

	// 使用 子类名称::静态成员名 访问父类静态成员
	Child::c = 40;
	child.print();

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
}

执行结果 :

Parent::c = 10 , c = 10
Parent::c = 20 , c = 20
Parent::c = 30 , c = 30
Parent::c = 40 , c = 40
Press any key to continue . . .

【C++】继承 ⑩ ( 继承机制中的 static 静态成员 | 子类中访问父类静态成员的方法 )_继承


标签:Parent,静态,子类,成员,private,继承,父类
From: https://blog.51cto.com/u_14202100/8080488

相关文章

  • 【C++】继承 ⑫ ( 继承的二义性 | virtual 虚继承 )
    文章目录一、继承的二义性1、场景说明-继承的二义性2、继承中的二义性报错3、完整代码示例二、virtual虚继承1、虚继承引入2、虚继承语法3、代码示例-虚继承一、继承的二义性1、场景说明-继承的二义性A类是父类,B类和C类继承A类,是子类,D类多继承B类......
  • python面向对象-学习笔记(三、类方法、实例方法、静态方法)
    方法相关方法的概念描述一个目标的行为动作和函数相似封装了一系列行为动作。比如一个人怎么吃,怎么喝,怎么玩...都可以被调用最主要区别:调用方式方法的划分实例方法:默认第一个参数是一个实例类方法:默认第一个参数是类静态方法:没有默认参数注意划分的依据:方法的第一......
  • JavaScript ES6 类的继承和构造函数图
        https://www.bilibili.com/video/BV15S4y1N7Mu?p=13&vd_source=f47173c6ece362dfbe9a439ae6addcce   ......
  • 【C++】继承 ⑧ ( 继承 + 组合 模式的类对象 构造函数 和 析构函数 调用规则 )
    文章目录一、继承+组合模式的类对象构造函数和析构函数调用规则1、场景说明2、调用规则二、完整代码示例分析1、代码分析2、代码示例一、继承+组合模式的类对象构造函数和析构函数调用规则1、场景说明如果一个类既继承了基类,又在类中维护了一个其它类型的成员......
  • Java 静态代码块、代码块、构造方法和多态继承的代码执行顺序
    测试代码importlombok.Getter;publicclassExecutionOrder{{System.out.println("ExecutionOrdercode0");}static{System.out.println("ExecutionOrderstaticcode");}{System.out.println(&......
  • 数组的静态初始化和动态初始化
    publicclassArrayDemo02{publicstaticvoidmain(String[]args){//静态初始化:创建+赋值int[]a={1,2,3,4,5,6,7,8};System.out.println(a[0]);//动态初始化:包含默认初始化int[]b=newint[10];b[0]=10;......
  • python 类的继承
    假设父类:classParent(object):def__init__(self):print("打印父类")print(__class__)self.p_name="父类属性"self.p_code="10000"defget_parent_function(self):print("打印父类方法")de......
  • 【C++】继承 ⑪ ( 多继承 | 多继承语法 | 多继承案例 )
    文章目录一、多继承1、多继承基本语法2、多继承子类构造初始化3、多继承中访问父类成员二、多继承案例1、代码示例-简单多继承案例2、代码示例-多继承构造函数案例一、多继承1、多继承基本语法多继承概念:一个子类(派生类)可以继承多个父类(派生类);一个类......
  • Python 中多态性的示例和类的继承多态性
    单词"多态"意味着"多种形式",在编程中,它指的是具有相同名称的方法/函数/操作符,可以在许多不同的对象或类上执行。函数多态性一个示例是Python中的len()函数,它可以用于不同的对象。字符串对于字符串,len()返回字符的数量:示例x="HelloWorld!"print(len(x))元组......
  • Python 中多态性的示例和类的继承多态性
    单词"多态"意味着"多种形式",在编程中,它指的是具有相同名称的方法/函数/操作符,可以在许多不同的对象或类上执行。函数多态性一个示例是Python中的len()函数,它可以用于不同的对象。字符串对于字符串,len()返回字符的数量:示例x="HelloWorld!"print(len(x))元组对......