C++运算符重载(4) .*和.->操作符介绍

C++,中,下面的操作符是不能被重载的:

. (成员访问或点操作符)

?:(三元操作符或域操作符)

::(域操作符)

.*(指向成员的指针操作符)

sizeof (取对象大小操作符)
typedef (对象类型操作符)


操作符.*的介绍

.*是调用指向成员属性或函数指针的操作符

返回表达式左侧上指定的对象的特定类成员的值。

int Testpm::*pmd = &Testpm::_num;


Testpm是类名,_num是类中的一个属性

pmd表示指向Testpm类中的_num属性,



具体例子如下:

#include<iostream>
using namespace std;

class Testpm {
public:
	int _num;
	void _func1() { cout << "_func1\n"; }
};

//指向类中属性和方法的一些指针
int Testpm::*pmd = &Testpm::_num;   //指向成员函数的指针 普通指针
void (Testpm::*pmfp)() = &Testpm::_func1;  //指向成员函数的指针 函数指针


int main() {

	Testpm TestA;    //对象
	Testpm *TestPB = new Testpm();  //指针
    
	//通过外部指针访问类中的属性
	TestA.*pmd = 10;  
	TestPB->*pmd = 20;  

	//外部指针访问成员函数
	(TestA.*pmfp)();   
	(TestPB->*pmfp)();  

	cout << TestA._num << endl;
	cout << TestA._num << endl;
	cout << TestPB->_num << endl;
	system("PAUSE");
	return 0;
}

二元运算符 .* 将其第一操作数(必须是类的对象)与其第二操作数(必须是指向成员的指针)组合在一起。
二元运算符 –>* 将其第一操作数(必须是指向类的对象的指针)与其第二操作数(必须是指向成员的指针)组合在一起。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值