《C++ Primer》第14章 操作重载与类型转换
14.5节 下标运算符 习题答案
练习14.26:为你的StrBlob类,StrBlobPtr类,StrVec类和String类定义下标运算符。
【解答】
class StrBlob
{
public:
std::string& operator[](std::size_t n)
{
return data[n];
}
//其他成员
private:
std::string *data;
};
class StrBlobPtr
{
public:
std::string& operator[](std::size_t n)
{
return (*wptr.lock())[n];
}
const std::string& operator[](std::size_t n) const
{
return (*wptr.lock())[n];
}
//其他成员
private:
std::weak_ptr<std::vector<std::string>> wptr;
};
class StrVec
{
public:
std::string& operator[](std::size_t n)
{
return elements[n];
}
const std::string& operator[](std::size_t n) const
{
return elements[n];
}
//其他成员
private:
std::string *elements;
};
class String
{
public:
char& operator[](std::size_t n)
{
return (char)str[n];
}
const char& operator[](std::size_t n) const
{
return (char)str[n];
}
//其他成员
private:
char *str;
};
|