C++指向函数的指针定义方式为

下列程序的运行结果是0.请为横线处选择合适的程序()

#include <iostream>
#include <cmath>
using namespace std;
class Base {
public:Base(int X = 0);Base(Base &p);static void GetC(Base a1, Base a2) {cout << a2.X - a1.X;}
private:int X;
};
Base::Base(int XX) {X = XX;
}
Base::Base(Base &p) {X = p.X;
}
int main() {Base a1(5);Base a2(a1);__________ = Base::GetC;(*q)(a1, a2);return 0;
}

C++指向函数的指针定义方式为:

返回类型  (*指针名)  (函数参数列表)  ,例如 void (*p)(int)是指向一个返回值为void 参数为int类型的函数

对于指向成员函数的指针略有不同:

1.指向非静态成员函数:

定义方式:返回类型 (类名::*指针名)(函数参数列表)例如void (A::*p)(int)是一个指向A类中成员函数的函数指针。

赋值方式:p=&A::函数名,而一般的函数指针的赋值是p=函数名即可,注意区别。(成员函数必须是public类型的)

调用方式:成员函数指针的调用必须通过类对象进行调用,a.*p(int)即可调用成员函数(该成员函数是public类型的)

1.静态成员函数

对于静态成员函数的定义和使用方法都与普通函数指针的相同,只是在赋值的时候和非静态成员们函数指针的赋值方法相同。

因为静态成员函数的指针类型是与普通函数指针类型相同的。

静态与普通变量即函数的区别就是在声明部分有无类名,即:

普通成员变量:返回类型 (类名::*指针名)=

静态成员变量:返回类型 (*指针名)=

需要注意,初始化静态成员变量要在类外初始化,不能在声明时直接赋值

并且,调用静态成员变量的时候,不需要加对象名,直接*指针

另外,因为优先级的原因,调用成员函数指针的时候括号不能少



 

因此,选项A为指向非静态成员函数时的写法;B、C格式错误;D为指向静态成员函数时的写法



 

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

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

相关文章

LLM量化、高保真图生视频、多模态肢体运动生成、高分辨率图像合成、低光图像/视频增强、相机相对姿态估计

本文首发于公众号&#xff1a;机器感知 LLM量化、高保真图生视频、多模态肢体运动生成、高分辨率图像合成、低光图像/视频增强、相机相对姿态估计 EasyQuant: An Efficient Data-free Quantization Algorithm for LLMs Large language models (LLMs) have proven to be very s…

android实战视频教程,flutter开发实战详解pdf

前言 这是一篇软文、但是绝对不是鸡汤&#xff1b;为啥不是呢&#xff1f;因为我文笔太差…偶尔矫情发发牢骚&#xff08;勿喷&#xff09; 说说程序猿行业 现在社会上给IT行业贴上了几个标签&#xff1a;高薪、高危、高大上、秃顶&#xff08;哈哈&#xff09;。这些标签我…

[Ubuntu]apt源改为阿里源(基于Ubuntu 20.04/18.04)

我们需要根据我们自己Ubuntu系统版本来配置对应的apt源 一、常见LTS版本代号 Ubuntu 20.04代号为&#xff1a;focalUbuntu 19.04代号为&#xff1a;discoUbuntu 18.04代号为&#xff1a;bionicUbuntu 17.04代号为&#xff1a;zestyUbuntu 16.04代号为&#xff1a;xenial 二、…

C++的类与对象(三)

目录 类的6个默认成员函数 构造函数 语法 特性 析构函数 特性 类的6个默认成员函数 问题&#xff1a;一个什么成员都没的类叫做空类&#xff0c;空类中真的什么都没有吗&#xff1f; 基本概念&#xff1a;任何类在什么都不写时&#xff0c;编译器会自动生成以下六个默认…

Linux 性能优化的全景指南,都在这一篇里了,建议收藏!

Linux 性能优化 性能指标 高并发和响应快对应着性能优化的两个核心指标&#xff1a;吞吐和延时 应用负载角度&#xff1a;直接影响了产品终端的用户体验 系统资源角度&#xff1a;资源使用率、饱和度等 性能问题的本质就是系统资源已经到达瓶颈&#xff0c;但请求的处理还…

MySQL下实现纯SQL语句的递归查询

需求 有一个部门表&#xff0c;部门表中有一个字段用于定义它的父部门&#xff1b; 在实际业务中有一个『部门中心』的业务&#xff1b; 比如采购单&#xff0c;我们需要显示本部门及子部门的采购单显示出来。 结构 数据如下&#xff1a; 实现方式如下&#xff1a; WITH RECUR…

内衣洗衣机名牌排行榜前十名:十款强大性能内衣洗衣机精心力荐

小型内衣洗衣机一般是为婴儿宝宝&#xff0c;或者一些有特殊需要的用户而设计使用的&#xff0c;宝宝衣物换洗频繁&#xff0c;而且对卫生方面的除菌要求高&#xff0c;而为避免交叉感染&#xff0c;所以一般不适合和大人的衣物放在一起洗&#xff0c;因此对于有宝宝的家庭来说…

Android多线程实现方式及并发与同步,Android面试题汇总

一. 开发背景 想要成为一名优秀的Android开发&#xff0c;你需要一份完备的知识体系&#xff0c;在这里&#xff0c;让我们一起成长为自己所想的那样。 我们的项目需要开发一款智能硬件。它由 Web 后台发送指令到一款桌面端应用程序&#xff0c;再由桌面程序来控制不同的硬件设…

Plasmo框架开发浏览器插件配置newtab页面,并可以跳转

有关plasmo框架添加页面可以看官方文档&#xff1a;Browser Extension Pages – Plasmo 想要给插件添加一个页面&#xff0c;可以通过添加newtab.tsx添加&#xff1a; 或者通过添加tabs文件夹添加多个页面&#xff1a; 想要访问的话&#xff0c;只需要通过&#xff1a;chrome-…

Python爬虫实战第三例【三】【上】

零.实现目标 爬取视频网站视频 视频网站你们随意&#xff0c;在这里我选择飞某速&#xff08;狗头保命&#xff09;。 例如&#xff0c;作者上半年看过的“铃芽之旅”&#xff0c;突然想看了&#xff0c;但是在正版网站看要VIP&#xff0c;在盗版网站看又太卡了&#xff0c;…

2024年腾讯云轻量16核32G28M服务器优惠价格3468元15个月

2024年腾讯云轻量16核32G28M服务器优惠价格3468元15个月&#xff0c;380GB SSD云硬盘&#xff0c;6000GB月流量。 一张表看懂腾讯云服务器租用优惠价格表&#xff0c;一目了然&#xff0c;腾讯云服务器分为轻量应用服务器和云服务器CVM&#xff0c;CPU内存配置从2核2G、2核4G、…

[力扣100] 55.跳跃游戏

添加链接描述 思路&#xff1a; 只要能跳到下标为x的位置&#xff0c;那么x之前的位置就都可以跳到只要能跳到的最大位置大于数组长度-1&#xff0c;那么就说明可以跳到最后一个位置rightmost来记录能跳到的最大下标&#xff1b;当这个值大于长度-1时就可以返回True了 class …

页面路由跳转

路由方法 routTeam(row, column, cell, event) { console.log(row) console.log("111") const teamId 123 this.$router.push(/routTeam/team/ row.teamId) }, // 公共路由 export const constantRoutes [ { path: /routTeam, component: Layout, hidden: true…

Linux下du命令和df命令的使用

du命令作用是估计文件系统的磁盘已使用量&#xff0c;常用于查看文件或目录所占磁盘容量。df命令是统计磁盘使用情况&#xff0c;可以用来查看磁盘已被使用多少空间和还剩余多少空间。du命令语法du [选项] [文件或目录名称]参数&#xff1a;-a&#xff1a;--all&#xff0c; 列…

C#,数值计算,求解微分方程的预测校正法(修正欧拉法)算法与源代码

Leonhard Euler 1 微分方程 微分方程&#xff0c;是指含有未知函数及其导数的关系式。解微分方程就是找出未知函数。 微分方程是伴随着微积分学一起发展起来的。微积分学的奠基人Newton和Leibniz的著作中都处理过与微分方程有关的问题。微分方程的应用十分广泛&#xff0c;可…

To 有缘看到的朋友,To myself

To 有缘看到的朋友&#xff0c;To myself 零、00时光宝盒 我们生而为人&#xff0c;而不是什么神仙妖怪&#xff0c;自然逃不脱凡尘种种不易。 世界并不完美&#xff0c;面对很多事情我们都很无奈甚至悲哀&#xff0c;但生活总要继续下去&#xff0c;当困难悄悄地来临&#xff…

【vue3之组合式API】

组合式API 一、setup1.写法2.如何访问3.语法糖4.同步返回对象 二、reactive()和ref()1.reactive()2.ref() 三、computed四、watch函数1侦听单个数据2.侦听多个数据3. immediate4. deep5.精确侦听对象的某个属性 五、生命周期函数六、组件通信1.父传子2. 子传父 七、模版引用1. …

shell脚本一键部署docker

Docker介绍 Docker 是一个开源的平台&#xff0c;用于开发、交付和运行应用程序。它利用容器化技术&#xff0c;可以帮助开发人员更轻松地打包应用程序及其依赖项&#xff0c;并将其部署到任何环境中&#xff0c;无论是开发工作站、数据中心还是云中。以下是 Docker 的一些关键…

declare module ‘global‘

在 TypeScript 中&#xff0c;declare module global 是一个特殊的模块声明&#xff0c;用于扩展全局作用域中的对象或接口。这通常用于为浏览器环境中的全局对象&#xff08;如 window&#xff09;或 Node.js 环境中的全局对象&#xff08;如 global&#xff09;添加类型声明。…

vue模拟数据mock放哪

在Vue中进行模拟数据的mock可以放在多个地方&#xff0c;具体取决于需求和个人偏好。以下是几种常见的方式&#xff1a; 在组件内部&#xff1a;可以在Vue组件的methods中编写模拟数据的逻辑。这种方式适用于只在当前组件中需要使用模拟数据的情况。 使用Mock.js库&#xff1a…