c++如何利用* 重载->
时间: 2023-12-24 22:02:06 浏览: 97
在C++中,通过重载箭头运算符 ->,我们可以使指向一个类对象的指针像访问成员函数一样去访问类的成员变量或者成员函数,这种方式被称为“指向成员运算符重载”。
具体步骤如下:
1. 在类定义中声明一个返回指针的成员函数。
2. 重载箭头运算符 ->,使其返回上述成员函数的指针。
例如,假设我们有一个Person类,其中有一个成员函数getName(),我们希望使用指针访问该函数,代码如下:
```
class Person {
public:
string getName() {
return name;
}
private:
string name = "John Doe";
};
class PersonPtr {
public:
PersonPtr(Person* ptr) : m_ptr(ptr) {}
Person* operator->() {
return m_ptr;
}
private:
Person* m_ptr;
};
int main() {
Person p;
PersonPtr ptr(&p);
cout << ptr->getName() << endl; // 输出 John Doe
return 0;
}
```
在上述代码中,我们定义了一个名为PersonPtr的新类,它接受一个指向Person类对象的指针,并重载了箭头运算符 ->,使得它返回指向Person类中的成员函数getName()的指针。因此,我们可以通过PersonPtr对象访问Person类的成员函数getName()。
需要注意的是,重载箭头运算符 -> 的返回值必须是指针类型。在上述示例中,我们返回了一个指向Person类对象的指针。如果需要返回其他类型,需要根据实际情况进行修改。
阅读全文