c++函数基础总结

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

  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是一个静态全局函数。它只在定义它的文件中可见,不能在其他文件中被访问。

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

变量的作用域

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 变量的作用域是指程序代码能够访问该变量的区域,如果超出该区域,再访问时就会出现错误。在程序中,一般会根据变量…

HarmonyOS鸿蒙学习笔记(28)@entry和@Component的生命周期

entry和Component的生命周期 entry和Component的关系Component生命周期Entry生命周期 生命周期流程图生命周期展示示例代码参考资料 HarmonyOS的生命周期可以分为Compnent的生命周期和Entry的生命周期,也就是自定义组件的生命周期和页面的生命周期。 entry和Compone…

MySQL 索引使用(二)

本篇继续介绍有关索引的使用。 目录 一、SQL提示 二、单列索引和联合索引 三、覆盖索引 四、前缀索引 五、索引的使用原则 一、SQL提示 我们在使用索引来进行查询时,很有可能会出现一个字段中包含多个索引的情况,例如这里有一个name字段&#xff0c…

曾巩,散文的艺术与哲思

曾巩,字子固,世称南丰先生,南丰(今江西)人,生于北宋真宗天禧三年(公元1019年),卒于北宋元丰六年(公元1083年),享年64岁。他是中国北宋…

Unity开发——编辑器打包、3种方式加载AssetBundle资源

一、创建ab资源 (一)Unity资源设置ab格式 1、选中要打包成assetbundle的资源; 可以是图片,材质球,预制体等,这里方便展示用预制体打包设置展示; 2、AssetBundle面板说明 (1&…

【React篇】组件错误边界处理(组件错误引起的页面白屏)

我们知道在生产环境react错误会导致整个页面崩溃,显示为空白页面。 比如下图的错误,导致了左侧页面直接白屏: 由于某一个组件报错导致整个页面崩溃是很严重的问题,那么我们应该如何去降低代码报错带来的影响呢? 我们…

JavaScript 动态网页实例 —— 窗口控制

除了打开和关闭窗口之外,还有很多其他控制窗口的方法。例如,可以使用 window.focus()方法使窗口获得焦点,也可以利用与其相对的window.blur 方法使窗口失去焦点。本节介绍移动窗口、改变窗口大小、窗口滚动、窗口超时操作、常用窗口事件、常用窗口扩展等窗口控制的方法和手段。…

mac电脑鼠标键盘共享软件:ShareMouse for Mac 激活版

ShareMouse 是一款跨平台的键盘和鼠标共享软件,它允许用户在多台计算机之间共享同一组键盘和鼠标,实现无缝的操作和控制。该软件适用于 Windows 和 macOS 系统,并且支持多种连接方式,包括局域网连接和无线连接。 使用 ShareMouse&…

从openstack环境中将服务器镜像导出的简单办法

1 登录openstack的页面,找到计划导出的主机信息。 通过实例名称, IP地址,找到对应的记录。点击实例名称,进入详情页。 在这里主要可以知道,当前主机在服务器上的文件ID,可以按这个ID去找对应的目录。 还可…

java读取文件内容(正则表达式匹配)

已知文件score.txt内容如下: 语文85分,数学89分,英语75分,马列95分。 要求解析出其中的成绩数据,并计算总成绩 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import jav…

JDK环境配置、安装

DK环境配置(备注:分32位与64位JDK,32位电脑只能按照32位JDK,64位电脑兼容32、64位JDK) 一、检查自己电脑是否安装过JDK 1.在电脑屏幕左下角,输入命令提示符CMD,打开命令提示符应用 2.在打开界…

QT系列教程(7) QLineEdit介绍

简介 QLineEdit属于输入插件,用来实现单行录入。支持几种录入模式。 Normal表示正常录入,录入的信息会显示在QLineEdit上。 Password表示密码录入的方式,录入的信息不显示QLineEdit,只是通过黑色圆点显示。 NoEcho 表示不显示录入信息&am…

“开源与闭源:AI大模型发展的未来之路“

文章目录 每日一句正能量前言数据隐私开源大模型与数据隐私闭源大模型与数据隐私数据隐私保护的共同考虑结论 商业应用开源大模型的商业应用优势:开源大模型的商业应用劣势:闭源大模型的商业应用优势:闭源大模型的商业应用劣势:商…

ros DWA局部规划模块

ROS-DWA模块 主要流程DWAPlannerROS::computeVelocityCommandsDWAPlannerROS::dwaComputeVelocityCommandsDWAPlanner::findBestPathSimpleScoredSamplingPlanner::findBestTrajectory 调参技巧DWA被目标点过度吸引,且不听全局规划器指挥 消融实验goal_front_costs_…

Java 异步编编程——Java内置线程池(Executor 线程池)

文章目录 知道线程池是什么以及解决什么问题Java 内置线程池Java 内置线程池设计结构及执行机制ThreadPoolExecutor 中的概念生命周期核心参数阻塞队列4 种任务拒绝策略 线程池使用场景 知道线程池是什么以及解决什么问题 线程池(Thread Pool)是一种基于…

Kafka Java API

1、增加依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>1.0.0</version> </dependency>2、三个案例 案例1&#xff1a;生产数据 import org.apache.kafka.clients.p…

SpringBoot HelloWorld 之 实现注册功能

SpringBoot HelloWorld 之 实现注册功能 一.配置 创建数据库big_event CREATE TABLE user (id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ID,username varchar(20) COLLATE utf8_unicode_ci NOT NULL COMMENT 用户名,password varchar(32) COLLATE utf8_unicode_ci …

β-烟酰胺单核苷酸(NMN)功能不断得到验证 市场规模呈增长态势

β-烟酰胺单核苷酸&#xff08;NMN&#xff09;功能不断得到验证 市场规模呈增长态势 β-烟酰胺单核苷酸&#xff08;β-Nicotinamide mononucleotide&#xff0c;NMN&#xff09;是一种生物活性分子&#xff0c;是一种辅酶Ⅰ&#xff08;NAD&#xff09;的前体&#xff0c;也是…

WPF Binding对象

在WinForm中&#xff0c;我们要想对控件赋值&#xff0c;需要在后台代码中拿到控件对象进行操作&#xff0c;这种赋值形式&#xff0c;从根本上是无法实现界面与逻辑分离的。 在WPF中&#xff0c;微软引入了Binding对象&#xff0c;通过Binding&#xff0c;我们可以直接将控件与…

NTFS磁盘格式读写工具:Tuxera NTFS 2021 for Mac

Tuxera NTFS 是一款用于 macOS 系统的 NTFS 文件系统驱动程序。NTFS 是 Windows 系统中常用的文件系统&#xff0c;而 macOS 默认只支持读取 NTFS 格式的磁盘&#xff0c;不能进行写入操作。因此&#xff0c;如果你需要在 macOS 上进行 NTFS 磁盘的写入操作&#xff0c;就需要安…