C++ namespace命名空间 static静态成员

目录

命名空间 

静态成员

(1)静态数据成员

(2)静态成员函数

1 myclass.h

2 myclass.cpp

3 test.h

4 test.cpp

5 main.cpp


命名空间 

        命名空间(namespace)是许多编程语言使用的一种代码组织的形式。

        它实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。

        命名空间的作用主要是建立一些互相分隔的作用域,以分类和区别不同的代码功能,避免不同的代码片段(通常由不同的人协同工作或调用已有的代码片段)同时使用时由于不同代码间变量名相同而造成冲突。

静态成员

        静态成员是C++(以及其他一些面向对象编程语言)中的一个概念,它属于类本身而不是类的任何特定对象。静态成员可以是数据成员(即变量)或成员函数(即方法)。静态成员在类的所有对象之间共享,并且不依赖于任何特定的对象实例。

(1)静态数据成员

        静态数据成员是类的所有对象共享的变量。这意味着无论创建多少个对象,都只有一个静态数据成员的副本。静态数据成员通常在类的外部进行初始化。

(2)静态成员函数

        静态成员函数是只能访问静态数据成员和其他静态成员函数的类成员函数。它们不能访问类的非静态数据成员,因为非静态数据成员需要具体的对象实例来引用。静态成员函数可以通过类名或对象名来调用,但通常使用类名来调用,因为它们不依赖于任何对象实例。

 

1 myclass.h
#ifndef MYCLASS_H
#define MYCLASS_Hnamespace MyNamespace {class MyClass {public:MyClass();void myFunction();};}#endif // MYCLASS_H
2 myclass.cpp
#include "MyClass.h"
#include <iostream>
#include <QDebug>
using namespace std;namespace MyNamespace {MyNamespace::MyClass::MyClass()
{}void MyNamespace::MyClass::myFunction()
{qDebug()<<"MyClass::myFunction";
}}
3 test.h
#ifndef TEST_H
#define TEST_H
#include <QDebug>
namespace MyNamespace {class test{public:test();static int a;static void static_test_fun();void no_static_fun();};}#endif // TEST_H
4 test.cpp
#include "test.h"namespace MyNamespace {
// 在类外部定义和初始化静态成员变量
int test::a = 0;test::test()
{}
// 静态成员函数的定义
void test::static_test_fun()
{a++;qDebug()<<"static_test_fun a:"<<a;
}void test::no_static_fun()
{qDebug()<<"no_static_fun";
}}
5 main.cpp
#include "MyClass.h"
#include "test.h"
using namespace MyNamespace;
int main() {MyClass mMyClass;mMyClass.myFunction();test::static_test_fun();test::static_test_fun();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue+Mysql的超市进销存系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

工地污水处理一体化成套设备如何选型

工地污水处理一体化成套设备的选型是确保工地污水处理效果的关键。在选择合适的设备前&#xff0c;我们需要考虑几个重要因素。 首先&#xff0c;我们需要评估工地的实际污水处理需求。包括污水产生量、水质特征、处理要求等。通过了解工地的情况&#xff0c;我们能够确定适合处…

Rust 开发的高性能 HTTP 请求工具

一、简述 在现在的软件开发领域&#xff0c;HTTP请求的快速验证变得越来越重要。特别是对于后端开发人员和测试工程师来说&#xff0c;能够快速创建、执行并验证HTTP请求对于提升开发效率至关重要。近期有一个名为Hurl的开源项目&#xff0c;它被设计来高效执行HTTP请求&#…

一文读懂ETF(二)之交易详情

ETF分类&#xff08;二&#xff09;交易详情 我们昨天讲到了什么是ETF&#xff0c;ETF有哪些类型&#xff0c;很多朋友对ETF就有了一个基础的认识。 那么今天继续了解了解ETF的交易详情&#xff0c;我们在交易ETF的时候经常发现&#xff0c;有些ETF是可以当天卖出的&#xff0c…

《探索移动开发的未来之路》

移动开发作为当今科技领域中最为炙手可热的领域之一&#xff0c;正以惊人的速度不断迭代和发展。从技术进展到应用案例&#xff0c;再到面临的挑战与机遇以及未来的趋势&#xff0c;移动开发都呈现出了令人瞩目的发展前景。本文将围绕移动开发的技术进展、行业应用案例、面临的…

服务运营 | 印第安纳大学翟成成:改变生活的水井选址

编者按&#xff1a; 作者于2023年4月在“Production and Operations Management”上发表的“Improving drinking water access and equity in rural Sub-Saharan Africa”探讨了欠发达地区水资源供应中的可达性和公平性问题。作者于2020年1月去往非洲埃塞俄比亚提格雷地区进行…

2.9 Python缩进规则(包含快捷键)

Python缩进规则&#xff08;包含快捷键&#xff09; 和其它程序设计语言&#xff08;如 Java、C 语言&#xff09;采用大括号“{}”分隔代码块不同&#xff0c;Python采用代码缩进和冒号&#xff08; : &#xff09;来区分代码块之间的层次。 在 Python 中&#xff0c;对于类…

【Java面试题】计算机网络

文章目录 1.计算机网络基础1.1网络分层模型/OSI七层模型是什么&#xff1f;1.2TCP/IP四层模型是什么&#xff1f;每一层的作用&#xff1f;1.2.1TCP四层模型&#xff1f;1.2.2为什么网络要分层&#xff1f; 1.2常见网络协议1.2.1应用层常见的协议1.2.2网络层常见的协议 2.HTTP2…

数据分类分级赋能企业数据安全建设(附下载)

请前往知识星球下载&#xff1a;https://t.zsxq.com/18KTZnJMX 数据分类分级方案是指根据数据的特性、重要性以及安全性要求&#xff0c;将数据按照一定的标准和规则进行分类和定级&#xff0c;以便于更好地管理和利用这些数据。下面是一个基础的数据分类分级方案的构建步骤和…

基数排序详解

基数排序详解 一、基数排序的基本概念二、基数排序的特点二、基数排序的工作过程三、基数排序的伪代码四、基数排序的C语言代码示例五、基数排序的稳定性六、基数排序的优化与变体七、基数排序的应用场景八、结论 在计算机科学中&#xff0c;排序算法是一种非常基础和重要的算法…

CE认证收费标准、认证周期、认证流程

CE认证根据产品不同&#xff0c;对应的欧盟指令&#xff08;法规&#xff09;和测试标准就不同&#xff0c;其测试成本就不同&#xff0c;而测试成本是认证费用里占大的比例&#xff0c;因此认证费用就会不同&#xff1b;打个比方&#xff0c;空调和挖掘机&#xff0c;一个是家…

页面中异步请求的数据,python爬虫能爬到吗

页面中异步请求的数据通常是通过JavaScript在浏览器端发起的&#xff0c;这些请求在初始的HTML页面加载之后执行。Python爬虫直接请求HTML页面时&#xff0c;只能获取到初始的HTML内容&#xff0c;而无法直接获取到异步请求加载的数据。但是&#xff0c;有几种方法可以让Python…

Salesforce Flow直播预报

各位使用Salesforce的亲们已经发现Process Builder/Workflow距离最后退役的时间是越来越近了&#xff0c;强大的并且以后会更强大的Flow即将全面一统江湖&#xff0c;想快速上手Flow或者想了解Salesforce产品的Flow原理的宝们可以预约起来啦&#xff01;

【二叉树】Leetcode 102. 二叉树的层序遍历【中等】

二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09; 示例1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 解题思路…

如何使用ArkTS中的canvas实现签名板功能

一、屏幕旋转 实现签名板的第一个功能就是旋转屏幕。旋转屏幕在各种框架中都有不一样的方式&#xff0c;比如&#xff1a; 在H5端&#xff0c;我们一般是使用CSS中的transform属性中的rotate()方法来强制将网页横屏&#xff0c;然后实现一系列功能在嵌套第三方APP中&#xff…

spring 的理解

spring 的理解 spring 是一个基础的框架&#xff0c;同时提高了一个Bean 的容器&#xff0c;用来装载Bean对象spring会帮我们创建Bean 对象并维护Bean对象 的生命周期。在spring 框架上&#xff0c;还有springCloud,spring Boot 的技术框架&#xff0c;都是以Spring为基石的sp…

【Golang星辰图】Go语言中的数学和科学计算:从基础算法到高级工具的完整探索

加速数学和科学计算&#xff1a;使用Go语言的优秀库和示例代码 前言&#xff1a; 在当今数据驱动的世界中&#xff0c;数学和科学计算是解决各种问题的关键。而Go语言作为一门简单、高效和强大的编程语言&#xff0c;也提供了许多优秀的数学和科学计算库。本文将介绍几个流行…

Covalent Network(CQT)的以太坊时光机:在 Rollup 时代确保长期数据可用性

以太坊正在经历一场向 “Rollup 时代” 的转型之旅&#xff0c;这一转型由以太坊改进提案 EIP-4844 推动。这标志着区块链技术的一个关键转折&#xff0c;采用了一种被称为“数据块&#xff08;blobs&#xff09;”的新型数据结构。为了与以太坊的扩容努力保持一致&#xff0c;…

启动yarn时RM起不来解决办法

我玩3台虚拟机集群的时候&#xff0c;要起hdfs和yarn&#xff0c;用start-dfs.sh和start-yarn.sh启动的时候&#xff0c;hdfs能正常起&#xff0c;yarn的NM三台正常启&#xff0c;RM起不来&#xff0c;在103的log里查看了rm的日之后&#xff0c;它的报错信息是 报错信息&#…

【ZZULIOJ】1003: 两个整数的四则运算(Java)

题目描述 输入两个整数num1和num2&#xff0c;请你设计一个程序&#xff0c;计算并输出它们的和、差、积、整数商及余数。 输入 输入只有两个正整数num1、num2。 输出 输出占一行&#xff0c;包括两个数的和、差、积、商及余数&#xff0c;数据之间用一个空格隔开。 样例…