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

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

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

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

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

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

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

相关文章

Linux开发工具(个人使用)

Linux开发工具 1.Linux yum软件包管理器1.1Linux安装程序有三种方式1.2注意事项1.3如何查看,安装,卸载软件包1.3.1查看软件包1.3.2安装软件包1.3.3卸载软件 2.Linux vim编辑器2.1vim的基本操作2.2vim正常模式命令集2.3vim底行模式命令集2.4vim配置 3.Lin…

如何设置eclipse中web.xml 文件的地址

新学了一个项目 ,项目结构与平常自己构建的web项目不同 ,用eclipse打开之后,eclipse竟然自己创建了一个web.xml 而项目里面原本的web.xml 文件eclipse没有识别出来,导致后来浏览器访问任何路径都报错404 一、修改项目中web.xml的…

Centos7.9环境下安装Keepalived(亲测版)

目录 一、在线安装 二、离线安装 (1)、 下载 (2)、安装依赖包 (3)、解压文件 (4)、编译 (4.1)、进入 keepalived-2.2.8 目录中 (4.2)、安装Keepalived (5)、配置文件修改 (6)、启动 (7)、检查启动状态 (8)、 设置开机自启 (9)、配置从节点 (10)、启动从节点keepalived…

vue3中实现鼠标点击后出现点击特效

一、效果展示 图片下方为效果体验地址 缓若江海凝清光 二、代码 js中&#xff1a; <script setup lang"ts"> window.addEventListener("click", (e: MouseEvent) > {const pointer document.createElement("div");pointer.classLi…

数模混合芯片之可靠性设计

一、可靠性设计目的 数模混合芯片设计之所以需要可靠性设计&#xff0c;主要原因有以下几点&#xff1a; 工艺与环境影响&#xff1a; 半导体制造工艺存在着不可避免的随机和系统性偏差&#xff0c;这可能导致芯片内部的模拟电路和数字电路参数发生变化&#xff0c;影响性能…

CobaltStrike基本渗透

目录 CobaltStrike简介 主要功能&#xff1a; 使用注意&#xff1a; 在使用CobaltStrike进行渗透测试时&#xff0c;务必遵守法律法规&#xff0c;并获得合法授权。 CobaltStrike安装 前提 安装 服务端安装 windows安装 CS基本使用 监听器配置 一些基本的攻击…

算法(十四)动态规划

算法概念 动态规划&#xff08;Dynamic Programming&#xff09;是一种分阶段求解的算法思想&#xff0c;通过拆分问题&#xff0c;定义问题状态和状态之间的关系&#xff0c;使得问题能够以递推&#xff08;分治&#xff09;的方式去解决。动态规划中有三个重点概念&#xff…

【监控】prometheus自定义指标 exporter

一、【写在前面】 prometheus自定义指标本质是用代码自己写一个网络访问的采集器&#xff0c;你可以在官网看到&#xff0c;Client libraries | Prometheus官方支持的语言有GO JAVA PYTHON RUBY RUST, 第三方的库就支持的更多了&#xff0c;有BASH C CPP LUA C# JS PHP R PER…

智慧医院物联网建设-统一管理物联网终端及应用

近年来&#xff0c;国家卫健委相继出台的政策和评估标准体系中&#xff0c;都涵盖了强化物联网建设的内容。物联网建设已成为智慧医院建设的核心议题之一。 作为医院高质量发展的关键驱动力&#xff0c;物联网的顶层设计与网络架构设计规划&#xff0c;既需要结合现代信息技术的…

Python3位运算符

前言 本文介绍的是位运算符&#xff0c;位运算可以理解成对二进制数字上的每一个位进行操作的运算&#xff0c;位运算分为 布尔位运算符 和 移位位运算符。 文章目录 前言一、位运算概览1、布尔位运算符1&#xff09;按位与运算符 ( & )2&#xff09;按位或运算符 ( | )3…

一款C#开源、简单、免费的屏幕录制和GIF动画制作神器

前言 今天要给大家推荐一款由C#语言开发且开源的操作简单、免费的屏幕录制和GIF动画制作神器&#xff1a;ScreenToGif 。 工具介绍 ScreenToGif 是一款免费的开源屏幕录制和GIF 制作工具。它可以帮助用户捕捉计算机屏幕上的实时动画&#xff0c;并将其保存为高质量的 GIF 图像…

开发者工具-sources(源代码选项)

一、概要说明 源代码面板从视觉效果上分为三个区域&#xff1a;菜单区、内容区、监听区。 菜单区里面有5个子分类&#xff1a; 网页(Page)&#xff1a;指页面源&#xff0c;包含了该页面中所有的文件&#xff0c;即使多个域名下的文件也都会展示出来&#xff0c;包括iframe…

手机耳机哪个品牌音质好

在寻找音质出色的手机耳机时&#xff0c;品牌选择显得尤为重要。市场上众多知名品牌提供了各式各样的耳机产品&#xff0c;它们在音质、降噪功能、设计等方面各有千秋。以下是一些在音质上表现优异的手机耳机品牌的分析&#xff1a; 索尼&#xff1a;索尼的耳机以其卓越的降噪技…

开利网络参加广州数据交易所学习活动

开利网络做为南沙广州数据交易所的会员参加了由“广东三会”组织的“数据资产”相关学习活动。&#xff08;下图为开利董事长付立军先生在签到&#xff09; 学习内容提现了数字时代企业数字化转型的核之心“发掘数据价值&#xff0c;驱动高速发展”&#xff0c;交易中心组织大家…

5G NR TAE TEST

环境配置&#xff1a; 测试TAE时&#xff0c;需要比对不同的Antenna Port之间的差异来测试 配置DL 2 layer MU的case layer1&#xff1a;通过设置weight&#xff0c;只有一个物理天线上有weight&#xff0c;其他天线上的weight为0&#xff0c;该天线的DMRS DMRS Port设置为1…

学习Java的日子 Day51 数据库,DDL

Day51 MySQL 1.数据库 数据库&#xff08;database&#xff09;就是一个存储数据的仓库。为了方便数据的存储和管理&#xff0c;它将数据按照特定的规律存储在磁盘上。通过数据库管理系统&#xff0c;可以有效地组织和管理存储在数据库中的数据 MySQL就是数据库管理系统&#…

PLC无线通讯模块

在工业自动化日益深入的今天&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;作为工业控制的核心大脑&#xff0c;其功能的扩展和智能化水平直接影响着整个生产线的效率和安全性。而PLC无线通讯模块&#xff0c;作为连接PLC与外界信息世界的桥梁&#xff0c;其重要性不…

Centos给普通用户添加sudo命令权限

打开sudoers文件 sudo visudo 修改sudoers文件 找到root ALL(ALL) ALL这一行&#xff0c;即如下图标出红线的一行 在此行下新增如下内容: lbs为用给予sudo执行权限的用户名 # 执行sudo命令&#xff0c;需要输入命令 lbs ALL(ALL) ALL 或 # 执行sudo命令&#xff0c;…

HQChart使用教程100-uniapp如何在vue3运行微信小程序

HQChart使用教程100-uniapp如何在vue3运行微信小程序 症状原因分析解决思路解决步骤1. 修改vender.js2. 修改HQChartControl.js 完整实例HQChart代码地址 症状 HQChart插件在uniappvue3的项目编译成小程序以后&#xff0c; 运行会报错&#xff0c;见下图。 原因分析 查了下…

【Mac】 Infuse for Mac(多媒体播放器) v7.7.6软件介绍和安装

软件介绍 Infuse Pro是一款非常强大的视频播放器&#xff0c;它被誉为 Apple TV上最强的播放器。它支持广泛的视频格式和解码器&#xff0c;包括DTS、DTS-HD、AC3、E-AC3等高清视频的音频播放任务。此外&#xff0c;Infuse Pro还支持所有常见的高清格式。 Infuse Pro的特点之…