C++成员指针详解:语法与调用方法
作者:小月亮
时间:2026-02-04
来源:正软商城
浏览:5
成员指针用于指向类的成员,需结合对象访问;声明时用类名::,通过.或->*调用,适用于动态访问成员的场景,提升代码灵活性。
本文目录
成员指针用于指向类的成员,需结合对象访问;声明时用类名::,通过.或->*调用,适用于动态访问成员的场景,提升代码灵活性。

在C++中,成员指针(pointer to member)是一种特殊的指针类型,它指向类的成员(包括成员变量和成员函数),而不是普通的内存地址。由于类的成员不能脱离类对象独立存在,因此成员指针不能直接使用,必须结合具体的对象或对象指针来访问目标成员。
成员指钟的语法定义
成员指针的声明语法与普通指针不同,需要包含类名和作用域操作符::。
成员变量指针:
数据类型 类名::*指针名;例如:
class MyClass {public:
int x;
double y;
};
int MyClass::*ptr = &MyClass::x; // 指向MyClass中int类型成员x的指针
成员函数指针:
返回类型 (类名::*指针名)(参数列表);例如:
class MyClass {public:
void func(int a);
double calc(double x, double y);
};
void (MyClass::*funcPtr)(int) = &MyClass::func;
double (MyClass::*calcPtr)(double, double) = &MyClass::calc;
如何调用成员指针
使用成员指针时,必须通过一个类实例(对象或对象指针)进行访问。
通过对象访问: 使用.*操作符
MyClass obj;obj.*ptr = 100; // 设置obj.x为100
(obj.*funcPtr)(5); // 调用obj.func(5)
通过对象指针访问: 使用->*操作符
MyClass *p = &obj;p->*ptr = 200; // 设置p所指对象的x为200
(p->*funcPtr)(10); // 调用p所指对象的func(10)
实际应用场景举例
成员指针常用于需要动态选择类成员的场景,比如实现通用的数据处理逻辑、回调机制或反射式操作。
示例:遍历多个对象并修改指定成员
#includeusing namespace std;
class Point {
public:
double x, y;
Point(double a=0, double b=0): x(a), y(b) {}
};
int main() {
Point points[3] = {{1,2}, {3,4}, {5,6}};
double Point::*coord = &Point::x; // 指向x成员
// 批量修改所有点的x坐标
for (int i = 0; i < 3; ++i) {
points[i].*coord *= 2;
}
for (auto& p : points)
cout << p.x << "," << p.y << endl;
// 输出: 2,2 6,4 10,6
return 0;
}
若将coord改为指向&Point::y,即可统一操作y坐标,提高代码灵活性。
基本上就这些。成员指针虽然不常用,但在需要泛化访问类成员的场合非常有用,理解其语法和调用方式有助于掌握更高级的C++编程技巧。
作者最新文章
wps如何生成目录自动生成目录
2026-11-05 11:16
二狗PPT怎么用Word文档生成PPT
2026-11-03 14:55
office打开弹出另存为 修复保存设置
2026-11-03 10:08
火山引擎EMRAI助手导出诊断结果方法
2026-11-01 19:35
navicat连接mysql数据库 配置测试方法
2026-10-26 10:02
上一篇:
《全面憨憨战争模拟器》模组玩法解析
下一篇:
新浪博客发长微博教程详解
热门文章
更多
精品专题
更多
Mac软件
更多
火山引擎 网页版
Windows/ macOS/ Linux
火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。
















