在他们的打麻将声音中,由于operator+又想起了operator->,总的来说,得返回个资源的指针
#pragma once
#ifndef HEAD_H
#define HEAD_H
#include<string>
class FooA {
private:
std::string data;
public:
FooA(const std::string &s):data(s){}
virtual ~FooA(){}
//interface
std::string* operator->() {
return &data;
}
};
class FooB {
private:
std::string* data;
public:
FooB(const std::string&s):data(new std::string(s)){}
~FooB() { delete data; }
//interface
std::string* operator->() {
return data;
}
};
#endif
无论是自身是否直接持有资源,返回指针才能愉快的亮出函数勒
#include"Head.h"
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using std::string;
using std::for_each;
using std::vector;
using std::cout;
using std::endl;
using std::ends;
using std::cbegin;
using std::cend;
using std::begin;
using std::end;
int main()
{
FooA a("abc");
cout << a->substr() << endl;
FooB b("bcd");
cout << b->substr() << endl;
}
Zr
2020-01-07
于西岭雪山归来