科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C++箴言:避免返回对象内部构件的句柄 (1)

C++箴言:避免返回对象内部构件的句柄 (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

避免返回对象内部构件的句柄

作者:sixth 来源:Blog 2007年10月27日

关键字: 构件 C++ Linux

  • 评论
  • 分享微博
  • 分享邮件
假设你正在一个包含矩形的应用程序上工作。每一个矩形都可以用它的左上角和右下角表示出来。为了将一个 Rectangle 对象保持在较小状态,你可能决定那些点的定义的域不应该包含在 Rectangle 本身之中,更合适的做法是放在一个由 Rectangle 指向的辅助的结构体中:




class Point {
 // class for representing points
 public:
  Point(int x, int y);
  ...

  void setX(int newVal);
  void setY(int newVal);
  ...
};

struct RectData {
 // Point data for a Rectangle
 Point ulhc; // ulhc = " upper left-hand corner"
 Point lrhc; // lrhc = " lower right-hand corner"
};

class Rectangle {
 ...

 private:
  std::tr1::shared_ptr pData; // see Item 13 for info on
}; // tr1::shared_ptr

  由于 Rectangle 的客户需要有能力操控 Rectangle 的区域,因此类提供了 upperLeft 和 lowerRight 函数。可是,Point 是一个用户定义类型,所以,在典型情况下,以传引用的方式传递用户定义类型比传值的方式更加高效的观点,这些函数返回引向底层 Point 对象的引用:

class Rectangle {
 public:
  ...
  Point& upperLeft() const { return pData->ulhc; }
  Point& lowerRight() const { return pData->lrhc; }
  ...
};
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章