c++类成员指针用法

C++之指针扫盲 前言 指针对于学习C/C++的人来说是一道必须迈过去的坎,就像学习九阳神功必须要打通任督二脉一样的道理。虽然说随着智能指针的普及,很少需要程序员再手动操作原始指针, 但是如果你连原始指针的都没学好,那你怎么可能用好智能指针呢? 无论是原始指针还是智能指针,要想用好它就一定要做到知其然,知其所以然。 因为本文阅读对象是有了一定指针基础的童鞋,所以如果你对指针如果是处于一无所知的状态的话,建议先去温习下指针的基础知识,不然可能读起来会打击你求知的欲望。 指针为什么要有类型 是为了指针运算和取值。 当使用指针取值 阅读详情

1)C++入门级小知识,分享给将要学习或者正在学习C++开发的同学。

2)内容属于原创,若转载,请说明出处。

3)提供相关问题有偿答疑和支持。
 

c++中新增类成员指针操作,为了访问方便,他是指向类的成员指针:
首先看一下成员变量指针:

另外的情况是:

 

定义方法:
成员类型 类名::*指针名=&类名::成员名;

对于成员变量指针可以指向任意相同类型的不同变量;
另外要是用  .*  或者是  ->*运算符去解引用,这个很好理解:
string A::* str = &A::m_str;
cout << a.*str << endl;
str是个指针,*str就是取得对象本身, a.*str就是从对象a中取得对象本身了;

对于类成员数据的定义方法要严格遵守上面的公式,如下的运用是错误的:

 

对于上面的定义:int A::* p = A::m_data;
按照我们的理解是:既然p是指针那么m_data本身也是指针,但是这个无法成立,无法遵守上面的公式定义(成员类型 类名::*指针名=&类名::成员名;);

对于静态成员,由于静态成员不属于类中的成员,因此,对于静态成员类型的成员使用方法与一般的普通的成员指针一样,只是加一个类的限定如:(&A::m_data):

下面看一下成员函数指针:

 

对于一般的成员函数指针同样的问题是需要加类的作用域限定符;
定义的一般形式是:
void (A::*fun)(int) = &A::set; //&号不能省略,与c不同
引用的一般形式是:
(a.*fun)(200); //注意的是(a.*fun)是需要括号的

对于特殊的静态成员函数指针,同样时函数不在类中,使用方式和一般的函数指针使用方式一样:

CAPL 中的变量类型详解与应用 阅读详情

相关推荐

【AI Infra】【RLHF框架】VeRL中WorkerGroup与Ray资源调度的协同机制剖析

本文深入剖析了VeRL框架中WorkerGroup与Ray资源调度的协同机制。通过解析Ray Placement Group的资源抽象和VeRL的RayResourcePool封装,详细阐述了WorkerGroup如何与底层资源精确绑定,并实现RLHF训练中异构、多阶段任务的灵活资源分配与动态调整,为大规模分布式强化学习训练提供了高效解决方案。

weixin_29204205的博客 391

C++类基础9——类成员指针

成员指针是指可以指向类的非静态成员的指针。一般情况下,指针指向一个对象,但是成员指针指示的是类的成员,而非类的对象。类的静态成员不属于任何对象,因此无须特殊的指向静态成员的指针,指向静态成员的指针与普通指针没有什么区别。成员指针的类型囊括了类的类型以及成员的类型。当初始化一个这样的指针时,我们令其指向类的某个成员,但是不指定该成员所属的对象:直到使用成员指针时,才提供成员所属的对象。为了解释成员指针的原理,我们定义下面这个类: 数据成员指针 和其他指针一样,在声明成员指针时我们也使用*来表示当前声明的

2301_80224556的博客 1588

Wi-Fi协议栈深度解析:从芯片实现到开源替代方案

本文深度解析Wi-Fi协议栈的架构与实现,对比了HardMAC与SoftMAC两种芯片方案的优劣。通过剖析ESP32等芯片的逆向工程实践,揭示了从零构建开源Wi-Fi MAC驱动(如esp32-open-mac项目)的技术路线与挑战,并探讨了开源协议栈对安全审计、功能定制和生态发展的重要意义。

weixin_29214335的博客 227

C++类成员指针

类成员指针

随手写下笔记和感悟 2295

用友u8服务器优化,用友U8erp软件运行的性能优化方案图文教程

今天一定要给大家分享一下用友U8erp软件运行的性能优化方案图文教程,以下方案来自用友软件官方维护工程师反馈在在处理客户问题的时候,有一类问题较为挠头,就是诸如用友U8服务器效率低下的问题。比如用友U8运行慢,卡住等,我们暂先不提用友U8软件代码、脚本层面本身的性能提升问题,我们只是基于现有用友U8软件版本,在客户现有环境下排查用友U8软件运行的性能瓶颈,并采取一定的技术手段进行性能调校。本文将推...

weixin_39882870的博客 5306

哈密顿-雅可比不等式:连接最优控制与优化算法的自然物理原理

在控制理论与优化算法之间,存在一个深刻而实用的桥梁。最优控制理论旨在通过设计控制输入,使动态系统在时间维度上达到性能最优,其核心数学工具如庞特里亚金极大值原理和哈密顿-雅可比-贝尔曼方程,为解决连续时间系统的优化问题提供了优雅框架。然而,这些方法在高维非凸问题中面临求解难题。哈密顿-雅可比不等式作为一种松弛方法,通过构造李雅普诺夫函数并验证一个不等式条件,转而寻求性能有保障且易于实现的次优解,其本质是保证系统能量衰减和性能上界。这一原理与耗散性理论紧密相连,体现了自然物理系统(如阻尼振动)中能量耗散的普遍规

weixin_30582943的博客 314

类成员指针

对象的成员要占用存储空间,因此也有地址,可以定义指向对象成员的指针变量,一般形式为: 数据成员类型 *指针变量名=初值; 如:int *ptr=&now.hour; //指向对象数据成员的指针变量 ►C++比C语言有更严格的静态类型,更加强调类型安全和编译时检查。 ►因此,C++的指针被分成数据指针、函数指针、数据成员指针、成员函数指针四种,而且不能随便相互转换。其中前两种是C语言的,称为普通指针(ordinary pointer);后两种是C++专门为类扩展的,称为成员指针(pointe.

m0_68095107的博客 758

Cadence 17.2配置CIS数据库报错?手把手解决ODBC驱动位数不匹配问题

本文详细解析了Cadence 17.2配置CIS数据库时常见的ODBC驱动位数不匹配问题,提供了从系统环境检查到分步解决方案的完整指南。重点解决32位应用程序与64位ODBC驱动之间的架构冲突,包含驱动安装、DSN配置及高级排查技巧,帮助电子工程师快速恢复设计环境。

play7的博客 972

C++ 类成员指针

成员指针是 C++ 引入的一种新机制,是指向类成员的指针,你可以使用它们来访问类的成员变量和成员函数,包括公有、私有和保护成员。它的申明方式和使用方式都与一般的指针有所不同。成员指针分为成员变量指针和成员函数指针。

Doublelv 的博客专栏。 8991

【RK3399 Ubuntu】基于rk3399的lxde的lubuntu桌面移植适配记录之第二步:最基本Ubuntu根文件系统的相关常用工具完善

文章目录1.使能系统网络管理服务1.1 安装驱动modules管理工具1.2 使能网络服务2.终端自动补全命令功能3.安装ssh服务4.安装系统信息查看工具5.安装resize工具6.安装lrzsz工具7.使能rc.local服务7.1 修改服务Install块7.2 使能rc.local.service服务7.3 添加执行脚本且赋予执行权限 续接上文,本文主要完善前面已经制作好的rootfs 1.使能系统网络管理服务 1.1 安装驱动modules管理工具 apt-get install kmod 1.

wang 恒 的博客 1387

华为OD机试真题 新系统2026-04-01 Python&JS 实现【勇攀数字高峰】

请你在给定的数字地形图中寻找登山路径,数字代表当前位置的海拔高度,要求从最低海拔出发,不断攀登,最终到达最高山峰。你需要寻找所有满足条件的登山路径。地图已经保证最低海拔和最高山峰都只有一个。

MISAYAONE的博客 852

【C++特殊工具与技术】类成员的指针

在 C++ 编程中,指针是操作内存的核心工具。除了我们熟悉的指向对象或变量的普通指针外,还有一种特殊的指针类型 ——类成员指针(Pointer to Class Members)。它允许我们在不绑定具体对象的情况下,指向类的成员(数据成员或成员函数),并在运行时动态访问这些成员。这种特性在框架设计、反射机制、状态机等场景中有着不可替代的作用。

byte轻骑兵的技术小窝 1556

手把手教你学simulink(41.4)--逆变器电场景示例:基于Simulink的主从控制的多逆变器协同控制(Multi-Inverter Coordinated Control)

需求分析在现代电力系统中,分布式发电和储能系统的广泛应用使得多个逆变器并联运行成为常见的应用场景。为了确保多个逆变器之间的协同工作,实现系统的稳定性和高效性,通常采用主从控制(Master-Slave Control)策略。主从控制通过一个主控制器(Master)来协调多个从控制器(Slave),确保所有逆变器的输出电压、频率和功率分配符合预期目标。本项目将基于Simulink平台,开发一个多逆变器协同控制系统,采用主从控制策略,实现对多个逆变器的精确控制和优化。

MHD0815的博客 307

C++中指向类成员指针的用法

C++中,指向类的成员指针包含两种: (1).指向类的成员函数的指针: 类型 (类名::* 函数成员指针名)(参数表); 函数成员指针名 = &类名::函数成员名; 也可将以上两条语句调整为一条语句: 类型 (类名::* 函数成员指针名)(参数表) = &类名::函数成员名; 类成员函数指针,是C++语言的一类指针数据类型,用于存储一个指定类具有给定的形参列表与返回值类型的成员函数的访问信息。 使用::*声明一个成员指针类型,或者定义一个成员指针变量。使...

网络资源是无限的 3279

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++高阶 指向类成员指针的用法

xxx

二进制君 3488

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++静态函数,类成员函数,普通函数的指针用法

一、类成员函数指针声明和调用 二、静态成员函数与普通函数指针用法一样

m1474204540的博客 545

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++ 一般(普通)函数指针、类成员函数指针,用法区别,以及 强制转换

直接上代码: #include <iostream> class CClass { public: //类 函数指针 void (*pClass_Func_Pointer)(int a); //类 静态函数 static void class_Static_Func(int a) { cout<<a<<"访问:类 静态成员函数"<<endl; } //类 函数 void class_Fu

maoyeahcom的博客 1250

c++ map容器 与 函数指针或者类成员函数指针

本文主要介绍 map容器中如何放入函数指针和类成员函数指针。 一、map容器的使用: // 定义一个map对象 map<int, string> mapStudent; 参考:https://blog.youkuaiyun.com/sevenjoin/article/details/81943864 二、map容器与普通函数指针 #include "map" #include "string" #include "vector" #include "iostream" void

ABC_ORANGE的博客 5166

「C/C++」C/C++ 指针篇 之 指针访问类成员对象

通过指针访问类成员时,应确保指针的类型与所指向对象的类型相匹配,以避免内存对齐问题和类型安全问题。:在通过指针访问类成员之前,必须确保指针是有效的,即它确实指向了一个有效的对象。在C++中,类的成员对象可以通过对象本身直接访问,也可以通过指向对象的指针间接访问。:在设计模式中,如工厂模式,经常需要使用指针来创建和返回对象实例,并通过指针访问这些对象的成员。:在实现动态数组或链表等数据结构时,通常需要使用指针来访问和修改链表节点的成员对象。如果成员是私有的或受保护的,则只能通过类的成员函数或友元函数来访问。

何曾参静谧的博客 1018

类成员指针和类成员函数指针

整理自C++的的教科书。

缤纷冷泪的专栏 623

C++普通函数指针和类成员函数指针

int(*fun)(double, int); fun = [](double a, int b) { cout << a << endl; cout << b << endl; return 3; }; int x = fun(34, 123); 函数指针

小孔明的专栏 934

CPP(一)在希望中出发:类成员函数指针

看cocos2d-x中的类成员函数回调没有看懂

李勇的专栏 925

指向类成员的指针

C++提供的一种特殊的指针,它指向类的成员,而不是指向类的一个对象中该成员的一个实例,这种指针称为指向类成员的指针。 由类外指向类内的指针变量 格式 类型符 类名::*指针名=类中数据成员地址描述`` #include <iostream> using namespace std; class FH { public: int i, *p; //类内和类外的不同,名字相同不影响。 FH() { i = 10; p = &i; } }; int

weixin_52045928的博客 332

const用法详解

const用法详解面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读   const int i=5;   int j=0;   ...   i=j;   //非法,导致编译错误   j=i;   //合法2. 必须初始化   const int

zhw888888的专栏 522

c++从入门到精通——指向类成员的指针

指向类成员的指针 指向成员变量的指针 #include <iostream> #include <string> using namespace std; class A{ public: A(int param){ mParam = param; } public: int mParam; }; void test(){ A a1(100); A* a2 = new A(200); int* p1 = &a1.mParam; int A::*p2 =

mirana的专栏 232
上一篇: c++重载(运算符)
下一篇: c++单例模式
EmLinuxDeveloper
博客等级 码龄2年 308粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值