C++中成员指针访问运算符该如何使用呢
时间: 2023-12-01 17:04:04 浏览: 29
C++中成员指针访问运算符是一个二元运算符,使用箭头运算符(->*)来表示。它被用来访问类的成员指针所指向的对象的成员。
语法如下:
```
class_name::*member_pointer_variable_name
```
其中,`class_name`是类名,`member_pointer_variable_name`是成员指针变量名。
使用时,先定义一个成员指针变量,然后使用箭头运算符将其与对象进行绑定,最后使用括号运算符来访问成员指针所指向的对象的成员。
例如,假设有一个类`Person`,其中有一个私有成员变量`age`:
```
class Person {
private:
int age;
public:
Person(int _age): age(_age) {}
int getAge() { return age; }
};
```
然后定义一个成员指针类型为`int (Person::*)()`的变量`p`,它指向`Person`类的`getAge()`成员函数:
```
int (Person::*p)() = &Person::getAge;
```
接下来,定义一个`Person`对象`p1`,使用箭头运算符将其与`p`绑定,然后使用括号运算符来访问`p1`对象的`age`成员变量:
```
Person p1(20);
int age = (p1.*p)();
```
这时,变量`age`的值将为`20`。
相关问题
在c++中,访问一个对象的成员所用的运算符是什么
在 C++ 中,访问一个对象的成员所用的运算符是点运算符(.)。点运算符连接对象名和成员名,用于访问对象的非静态成员。点运算符左边是一个对象或者指向对象的指针,右边是该对象的成员名,如下所示:
```cpp
class MyClass {
public:
int x;
void foo() {
// ...
}
};
MyClass obj;
obj.x = 10; // 访问对象 obj 的成员变量 x
obj.foo(); // 访问对象 obj 的成员函数 foo
```
在访问对象的成员函数时,可以通过点运算符来调用该函数,同时也可以使用 this 指针来访问该对象的成员。如果对象是指针,则使用箭头运算符(->)来访问该对象的成员,如下所示:
```cpp
MyClass* ptr = new MyClass();
ptr->x = 20; // 访问指针 ptr 所指向的对象的成员变量 x
ptr->foo(); // 访问指针 ptr 所指向的对象的成员函数 foo
```
c++不能重载运算符有哪些 使用中文回答
C++中不能重载的运算符包括:
1. .(点)运算符:该运算符用于访问类对象的成员,不能被重载。
2. .*(指针点)运算符:该运算符用于访问类对象的成员指针,不能被重载。
3. ::(域解析)运算符:该运算符用于访问命名空间和类的静态成员,不能被重载。
4. sizeof 运算符:该运算符用于计算数据类型或变量的大小,不能被重载。
5. ?:(三目)运算符:该运算符用于条件表达式,不能被重载。
6. typeid 运算符:该运算符用于获取一个表达式的类型信息,不能被重载。
7. const_cast 运算符:该运算符用于去除const属性,不能被重载。
8. dynamic_cast 运算符:该运算符用于动态类型转换,不能被重载。
9. static_cast 运算符:该运算符用于静态类型转换,不能被重载。
10. reinterpret_cast 运算符:该运算符用于类型转换,不能被重载。