c++ 学习 之 继承中静态成员函数和静态成员变量

#define _CRT_SECURE_NO_WARNINGS

#include

using namespace std;

class Base

{

public:

static int m_A; // 静态成员变量

static void func() // 静态成员函数

{

cout << "Base 下的 静态成员函数" << endl;

}

};

int Base::m_A = 200; // 初始化静态成员变量

class Son : public Base

{

public:

static int m_A; // 与父类同名的静态成员变量

static void func() // 与父类同名的静态成员函数

{

cout << "Son 下的 静态成员函数" << endl;

}

};

int Son::m_A = 100; // 初始化子类中同名的静态成员变量

void test01()

{

Son p;

// 通过对象来访问

cout << p.m_A << endl; // 未说明就是子类的

cout << p.Base::m_A << endl; // 使用作用域解析运算符访问父类的静态成员变量

// 通过类名进行访问

cout << Son::m_A << endl; // 直接访问子类的同名静态成员变量

cout << Son::Base::m_A << endl; // 使用两次作用域解析运算符访问父类的静态成员变量

}

void test02()

{

Son s;

s.func(); // 调用子类的静态成员函数

s.Base::func(); // 使用作用域解析运算符调用父类的静态成员函数

Son::func(); // 直接调用子类的静态成员函数

Son::Base::func(); // 使用两次作用域解析运算符调用父类的静态成员函数

}

int main()

{

// 在这里你可以调用 test01() 或 test02() 来测试上述代码的输出

}

相关推荐
ouynagda几秒前
Linux 进程与线程学习笔记
linux·笔记·学习
手握风云-1 小时前
一条消息的旅程:RabbitMQ 学习与实践(四)
学习
渡我白衣1 小时前
深入理解 Transformer:Transformer 究竟是什么?
java·linux·开发语言·c++·人工智能·深度学习·transformer
「QT(C++)开发工程师」9 小时前
C++ 11 常用for循环
开发语言·c++
我还记得那天9 小时前
0 初识C++
开发语言·c++
FfHUCisI10 小时前
Go 编译过程全景
开发语言·后端·golang
FfHUCisI10 小时前
Golang 语法分析与 AST:Parser 与 go/ast
开发语言·后端·golang
lemon_sjdk11 小时前
ObjectProperty
java·开发语言·算法
大模型码小白11 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring