c++函数基础总结

news2024/11/18 15:47:02

在给出的代码片段中,我们看到两部分内容:一个类定义和一个全局函数声明。让我们逐一分析它们:

  1. 类定义

cpp复制代码

class
{
public:
void a();
};

这个类定义是不完整的,因为它没有类名。但为了说明,我们假设类名为 MyClass。这样,类定义将如下所示:

cpp复制代码

class MyClass
{
public:
void a();
};

这个类 MyClass 有一个公共成员函数 a(),但它没有实现(即函数体)。这意味着在类的外部,你需要为这个函数提供实现。

  1. 全局函数声明

cpp复制代码

void b();

这是一个全局函数的声明,名为 b。它接受没有参数(void 表示没有参数)并返回 void(表示没有返回值)。与类 MyClass 中的 a() 成员函数不同,b() 是一个自由函数(或全局函数),它不属于任何类。

b函数的作用

函数 b() 的确切作用取决于它的实现。从声明中,我们无法知道它具体做什么。但通常,全局函数执行某些独立的任务或提供某种服务,这些任务或服务不需要与特定的类实例关联。

a() 和 b() 的区别

  • a() 是一个类的成员函数,它属于 MyClass 类。要调用它,你需要一个 MyClass 的实例(对象)。
  • b() 是一个全局函数,它不属于任何类。你可以在任何地方直接调用它,而无需创建类的实例。
  • 由于 a() 是成员函数,它可能访问类的私有和受保护成员。而 b() 作为全局函数,不能直接访问任何类的私有或受保护成员。
  • 它们的用途和上下文可能完全不同。a() 可能用于操作类的内部状态或数据,而 b() 可能用于执行与任何类实例无关的任务。

 静态成员函数的定义与特性
静态成员函数,顾名思义,是类的静态成员。它们与普通成员函数的主要区别在于,静态成员函数没有this指针。因为它们不依赖于任何类的实例,所以可以在没有类的实例的情况下被调用。然而,静态成员函数只能访问类的静态成员。

让我们看一个简单的例子:

class MyClass {
public:
    static void myFunction() {
        // 这是一个静态成员函数
    }
};

在这个例子中,myFunction是MyClass的一个静态成员函数。它可以在没有类的实例的情况下被调用,如下所示:

MyClass::myFunction(); // 调用静态成员函数

静态成员函数的主要特性包括:

没有this指针:静态成员函数没有this指针,因为它们不依赖于任何类的实例。

只能访问静态成员:静态成员函数只能访问类的静态成员,不能访问类的非静态成员。

可以在没有类的实例的情况下被调用:静态成员函数可以在没有类的实例的情况下被调用。

静态全局函数的定义与特性
静态全局函数是在全局范围内定义的静态函数。它们只在定义它们的文件中可见,不能在其他文件中被访问。这是因为静态全局函数在链接时具有内部链接性(Internal Linkage)。

让我们看一个简单的例子:

static void myFunction() {
    // 这是一个静态全局函数
}

在这个例子中,myFunction是一个静态全局函数。它只在定义它的文件中可见,不能在其他文件中被访问。

静态全局函数的主要特性包括:

内部链接性:静态全局函数在链接时具有内部链接性,只在定义它们的文件中可见。

不能被其他文件访问:静态全局函数不能在其他文件中被访问。

可以在任何地方被调用:静态全局函数可以在任何地方被调用,只要是在定义它的文件中。

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

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

相关文章

【SQL学习进阶】从入门到高级应用【三范式】

文章目录 什么是数据库设计三范式三范式一对多怎么设计多对多怎么设计一对一怎么设计最终的设计 🌈你好呀!我是 山顶风景独好 💕欢迎来到我的博客,很高兴能够在这里和您见面! 💕希望您在这里可以感受到一份…

【SpringBoot】SpringBoot整合JWT

目录 先说token单点登录(SSO)简介原理单点登录的优势单点登录流程分布式单点登录方式方式一:session广播机制实现方式二:使用cookieredis实现。方式三:token认证 JWT数字签名JWT的作用JWT和传统Session1、无状态&#…

精雕细琢,B 端 UI 设计展典雅风范

精雕细琢,B 端 UI 设计展典雅风范

virtualbox中ubuntu22.04网络配置

第一:添加两个网卡,网卡1是NAT方式,网卡2是仅主机模式(两个顺序不能颠倒) 第二步:启动ifconfig查看网络

LabVIEW车体静强度试验台测控系统

LabVIEW车体静强度试验台测控系统 开发了一种基于LabVIEW的车体静强度试验台测控系统,通过自动化技术提高试验的精度和效率。系统采用LabVIEW软件与S7-200 SMART PLC硬件平台相结合,实现了对液压缸作用力的精确控制和试验数据的实时采集及管理。 传统的…

11.1 排序算法

目录 11.1 排序算法 11.1.1 评价维度 11.1.2 理想排序算法 11.1 排序算法 排序算法(sorting algorithm)用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用,因为有序数据通常能够被更高效地查找、分析和处理。 如图 1…

MySQL事务与MVCC

文章目录 事务和事务的隔离级别1.为什么需要事务2.事务特性1_原子性(atomicity)2_一致性(consistency)3_持久性(durability)4_隔离性(isolation) 3.事务并发引发的问题1_脏读2_不可重…

香橙派 AI pro:AI 加速初体验

香橙派 AI pro:AI 加速初体验 在AI领域,不断涌现的硬件产品为开发者提供了前所未有的便利和可能性。今天,我要介绍的这款产品——香橙派 AIpro,就是其中的佼佼者。在昇腾 AI 芯片的加持下,这款开发板有着出色的算力。…

【WEEK14】 【DAY3】Swagger第一部分【中文版】

2024.5.29 Wednesday 目录 16.Swagger16.1.Swagger简介16.1.1.前后端分离16.1.2.前后端分离时代16.1.3.产生的问题16.1.4.解决方案16.1.5.Swagger 16.2.SpringBoot集成Swagger16.2.1.新建swagger-demo项目16.2.2.导入依赖16.2.2.1.springfox-swagger216.2.2.2.springfox-swagge…

CTFHUB-信息泄露-备份文件下载

目录 网站源码 bak文件 vim缓存 .DS_Store 当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。 需要用到的工具: dirsearch (目录扫描工具在python3环境下) 网站源码 可以利用bur…

串口屏变量图标显示电量

1、首先制作好电量的图标图片,如下图: 2、然后可以使用美图秀秀逐个修改图片的像素为一致,比如像素为55*32,修改后如下 3、然后打开DGUS_V7.647软件,点击ICL生成工具 4、导入图片,点击生成ICL,如…

2024年中国CRM行业发展方向和前景 | 《连接型CRM》文章精选

01、创新突破,技术为本 中国经济发展处于增速换挡期,企业数字化需求旺盛,同时云计算、大数据、物联网、区块链、5G等新技术的发展,为CRM系统的应用与发展提供了更多的机遇和可能。 近些年来,技术的发展对CRM的重要性…

LabVIEW远程开发与调试

在现代项目开发中,远程开发与调试已经成为一种常见的模式,特别是在使用LabVIEW进行工程项目时。本文将详细分析LabVIEW远程开发与调试的优缺点,并从多个角度说明如何建议客户采用这种方式,以提高项目效率和质量。 优点 灵活性和便…

【UnityShader入门精要学习笔记】第十六章 Unity中的渲染优化技术 (上)

本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更,有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 移动平台上…

Webrtc支持HEVC之FFMPEG支持HEVC编解码(一)

一、前言 Webrtc使用的FFMPEG(webrtc\src\third_party\ffmpeg)和官方的不太一样,使用GN编译,各个平台使用了不一样的配置文件 以Windows为例,Chrome浏览器也类似 二、修改配置文件 windows:chromium\config\Chrome\win\x64 其他平台: chromium\config\Chrome\YOUR_SYS…

“仿RabbitMQ实现消息队列”---整体架构与模块说明

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、概念性框架理解 我们主要实现的内容: 1.Broker服务器:消息队列服务器(服务端&…

新宏观范式和产业趋势下,纷享销客如何助力企业出海?

出海,已不再是企业的“备胎”,而是必须面对的“大考”!在这个全球化的大潮中,有的企业乘风破浪,勇攀高峰,也有的企业在异国他乡遭遇了“水土不服”。 面对“要么出海,要么出局”的抉择&#xff…

阿里云 通过EIP实现VPC下的SNAT以及DNAT

192.168.0.85 有公网地址192.1680.95无公网地址 在192.168.0.85(有公网地址服务器上操作) #开启端口转发 echo "net.ipv4.ip_forward 1" >> /etc/sysctl.conf sysctl -p#仅允许192.168.0.95 iptables -t nat -I POSTROUTING -s 192.16…

【为什么 Google Chrome 打开网页有时极慢?尤其是国内网站,如知网等】

要通过知网搜一点资料,发现怎么都打不开。而且B站,知乎这些速度也变慢了!已经检查过确定不是网络的问题。 清空了记录,清空了已接受Cookie,清空了缓存内容……没用!!! 不断搜索&am…

eDP V1.4协议介绍

一、说明 eDP的全称是Embedded DisplayPort嵌入式显示端口,主要应用与短距离系统内应用,例如手机、一体式台式机等。eDP V1.4b是基于DP V1.3标准制作完成,但因应用场景的不同,还是有很多区别。 电压摆幅不同,eDP相对较低; eDP功耗相对较低; DP有线材和连接器的要求,eD…