您的位置:首页 > 游戏 > 游戏 > 嘉兴网站推广价格_高端零食品牌有哪些_武汉网络营销推广_网站推广优化网址

嘉兴网站推广价格_高端零食品牌有哪些_武汉网络营销推广_网站推广优化网址

2025/4/18 21:24:16 来源:https://blog.csdn.net/weixin_42255569/article/details/144759195  浏览:    关键词:嘉兴网站推广价格_高端零食品牌有哪些_武汉网络营销推广_网站推广优化网址
嘉兴网站推广价格_高端零食品牌有哪些_武汉网络营销推广_网站推广优化网址

文章目录

    • 条款 23:宁以 non-member、non-friend 替换 member 函数
      • 核心思想
      • 示例代码
      • 注意事项

条款 23:宁以 non-member、non-friend 替换 member 函数


核心思想

  1. 更高的封装性

    • non-member 函数不需要访问类的 private 或 protected 成员,减少对类实现的依赖,增强封装性。
  2. 更灵活的设计

    • 将功能从类内部移到类外部,功能模块更容易独立扩展,减少类的复杂性。
  3. 更强的可扩展性

    • non-member 函数可以与类的接口分离,使得类的使用更灵活,同时保留对类行为的控制。
  4. 使用命名空间组织代码

    • non-member 函数与相关类放在同一命名空间中,有助于逻辑关联性和代码可读性。

示例代码

namespace WebBrowserStuff {class WebBrowser {
public:void navigateTo(const std::string& url) {// 导航到指定 URLcurrentUrl_ = url;}void display() const {std::cout << "Displaying: " << currentUrl_ << std::endl;}
private:std::string currentUrl_;  // 当前网址
};// non-member 函数,清理浏览器
void clearBrowser(WebBrowser& wb) {wb.navigateTo("about:blank");std::cout << "Browser cleared." << std::endl;
}} // namespace WebBrowserStuff

注意事项

  1. 非成员函数增强封装性

    • 非成员函数无法访问类的 private 和 protected 成员,促使接口设计更具一致性和清晰性。
  2. 避免滥用 friend 函数

    class WebBrowser {
    public:friend void clearBrowser(WebBrowser& wb); // 不推荐:滥用 friend
    };
    
    • 问题:friend 函数打破封装性,导致外部函数能直接访问类的私有成员。
    • 改进:尽量设计为非成员函数,避免直接访问类的内部实现。
  3. 使用命名空间组织代码

    • non-member 函数与其操作的类放在同一个命名空间,确保逻辑清晰。
    namespace WebBrowserStuff {class WebBrowser {...};void clearBrowser(WebBrowser& wb);  // non-member 函数
    }
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com