指向类的非静态成员的指针
2016-05-05 18:58
211 查看
类的成员自身也是一些变量、函数或者对象等,因此也可以直接将他们的地址存放到一个指针变量中,这样,就可以使指针直接指向对象的成员,今儿可以通过这些指针访问对象的成员。
声明指针语句的一般形式为:
类型说明符 类名::*指针名;//声明指向数据成员的指针
类型说明符(类名::*指针名)(参数表);//声明指向函数成员的指针
对数据成员指针赋值的一般语法形式为:
指针名=&类名::数据成员名;
访问数据成员时,可通过以下两种语法形式实现:
对象名.类成员指针名 或 对象指针名-> 类成员指针名
成员函数指针在声明之后要用以下形式的语句对其赋值:
指针名=&类名::函数成员名;
(常成员函数与普通成员函数具有不同的类型,因此能够被常成员函数赋值的指针,需要在声明时明确写出const关键字)
可以用以下形式的语句利用指针调用函数:
(对象名.类成员指针名)(参数表) 或(对象指针名-> 类成员指针名)(参数表)
以下是访问对象的公有成员函数的不同方式:
声明指针语句的一般形式为:
类型说明符 类名::*指针名;//声明指向数据成员的指针
类型说明符(类名::*指针名)(参数表);//声明指向函数成员的指针
对数据成员指针赋值的一般语法形式为:
指针名=&类名::数据成员名;
访问数据成员时,可通过以下两种语法形式实现:
对象名.类成员指针名 或 对象指针名-> 类成员指针名
成员函数指针在声明之后要用以下形式的语句对其赋值:
指针名=&类名::函数成员名;
(常成员函数与普通成员函数具有不同的类型,因此能够被常成员函数赋值的指针,需要在声明时明确写出const关键字)
可以用以下形式的语句利用指针调用函数:
(对象名.类成员指针名)(参数表) 或(对象指针名-> 类成员指针名)(参数表)
以下是访问对象的公有成员函数的不同方式:
#include<iostream> using namespace std; class point { public: point(int x=0,int y=0):x(x),y(y){} int getx() const {return x;} int gety() const {return y;} private: int x,y; }; int main() { point a(4,5); point *p1=&a;//定义对象指针并初始化 int (point::*funcptr)() const=&point::getx;//定义成员函数指针并初始化 cout<<(a.*funcptr)()<<endl;//使用成员函数指针和对象名访问成员函数 cout<<(p1->*funcptr)()<<endl;//使用成员函数指针和对象指针访问成员函数 cout<<a.getx()<<endl;//使用对象名访问成员函数 cout<<p1->getx()<<endl;//使用对象指针访问成员函数 return 0; }
相关文章推荐
- Android Native 绘图方法
- Python动态类型的学习---引用的理解
- 关于指针的一些事情
- 我是运营,我没有假期
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 土人系列AS入门教程 -- 对象篇
- 文件遍历排序函数
- DB2数据库的安装
- C#实现把指定数据写入串口
- “传奇”图象数据存储方式
- C#托管堆对象实例包含内容分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- 修复mysql数据库
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- C#中struct和class的区别详解
- C#实现获取不同对象中名称相同属性的方法
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法