重载->

  1. 必须定义为类成员函数
  2. 不接受显示形参,必须返回指向类类型指针或定义了箭头操作符的类类型对象
  3. 可以使当前类对象调用其他类中的成员(如智能指针)
#include <iostream>
#include <vector>

using namespace std;

class Dog{
public:
  static int i;
  static int j;

  void fun2()
  {
    cout << i << endl;
    cout << j << endl;
  }

};

int Dog::i = 0;
int Dog::j = 1;

class Cat
{
public:
  Dog dog1;
  Dog* operator->()
  {
    return &dog1;
  }
};

 

int main(int argc, char const *argv[])
{
  /* code */
  Dog dog;
  dog.fun2();

  Cat cat;

  //通过重载运算符'->',可以使当前类对象调用其他类中的成员,暂时不清楚更大的作用。

  cat->i = 10; 
  (cat.operator->())->j = 20;

  cat.dog1.fun2();

  return 0;
}

打印结果:

0

1

10

20

 

上一篇:Python中的内部函数和闭包


下一篇:spark map