#include <string>
#include <vector>
#include <iostream>
using namespace std;
class A{
public:
string* operator->()
{
return & data[curr];
}
private:
vector<string> data{"str1","str2","str3"};
size_t curr = 0;
};
class B{
public:
A& operator->()
{
return a;
}
private:
A a;
};
class C{
public:
B& operator->()
{
return b;
}
private:
B b;
};
int main()
{
C c;
cout << c->size() << endl;
return 0;
}
c->size()执行过程如下:
首先,c->size()展开成c->operator->()->siz