C++ Primer(第5版) 练习 14.28
练习 14.28 为你的StrBlobPtr类添加加法和减法运算符,使其可以实现指针的算术运算(参见3.5.3节,第106页)。
环境:Linux Ubuntu(云服务器)
工具:vim
代码块
class StrBlobPtr{
public:
StrBlobPtr(): curr(0) {}
StrBlobPtr(StrBlob &s, size_t sz = 0): wptr(s.data), curr(sz) {}
string &deref() const;
StrBlobPtr &incr();
StrBlobPtr operator+(StrBlobPtr &sbp, std::size_t n);
StrBlobPtr operator-(StrBlobPtr &sbp, std::size_t n);
private:
shared_ptr<vector<string>> check(size_t, const string &) const;
weak_ptr<vector<string>> wptr;
size_t curr;
};
StrBlobPtr StrBlobPtr::operator+(StrBlobPtr &sbp, std::size_t n){
StrBlobPtr ret = *this;
ret += n;
return ret;
}
StrBlobPtr StrBlobPtr::operator-(StrBlobPtr &sbp, std::size_t n){
StrBlobPtr ret = *this;
ret -= n;
return ret;
}