Item 28:Avoid returning "handles" to object internals(避免返回内部对象的句柄)
例如,有一个矩形类rectangle,需要表示它的四个顶点,可以定义以下类:
class point
{
public:
point(int x, int y);
...
void setX(int newVal);
void setY(int newVal);
...
};
class RectData
{
point ulhc; //upper left-hand corner
point lrhc; //lower right-hand corner
};
class Rectangle
{
...
private:
std::tr1::shared_ptr<RectData> pData;
};
有时候客户需要取得矩形的顶点,因此
例如,有一个矩形类rectangle,需要表示它的四个顶点,可以定义以下类:
class point
{
public:
point(int x, int y);
...
void setX(int newVal);
void setY(int newVal);
...
};
class RectData
{
point ulhc; //upper left-hand corner
point lrhc; //lower right-hand corner
};
class Rectangle
{
...
private:
std::tr1::shared_ptr<RectData> pData;
};
有时候客户需要取得矩形的顶点,因此