C++,中,下面的操作符是不能被重载的:
. (成员访问或点操作符)
?:(三元操作符或域操作符)
::(域操作符)
.*(指向成员的指针操作符)
sizeof (取对象大小操作符)
typedef (对象类型操作符)
操作符.*的介绍
.*是调用指向成员属性或函数指针的操作符
返回表达式左侧上指定的对象的特定类成员的值。
int Testpm::*pmd = &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;
}
二元运算符 .* 将其第一操作数(必须是类的对象)与其第二操作数(必须是指向成员的指针)组合在一起。
二元运算符 –>* 将其第一操作数(必须是指向类的对象的指针)与其第二操作数(必须是指向成员的指针)组合在一起。