`
tibaloga
  • 浏览: 877393 次
文章分类
社区版块
存档分类
最新评论

28 避免返回handles指向对象内部成分——effective c++

 
阅读更多

这样做有两个问题:

<!--[if !supportLists]-->a) <!--[endif]-->降低对象的封装性。把内部结构暴露在外面。

<!--[if !supportLists]-->b) <!--[endif]-->调用const函数,但是仍然可以更改对象。

有一个办法可以解决第二个问题,即返回的handles加上一个const限制,这样就可以更改返回的对象了。

另外,也会有一个新的问题——dangling handles(悬空的号码牌)。如果handles指向的指针已经释放,但是返回的handles却无法知道。

请记住:

避免返回handles(包括reference,指针,迭代器)指向对象内部。遵守这个条款可以增加封装性,帮助const成员函数的行为像个const,并将发生虚掉号码牌的可能性降至最低。

分享到:
评论

相关推荐

    Effective C++ 中文版

    条款28:避免返回handles指向对象内部成分 条款29:为“异常安全”而努力是值得的 条款30:透彻了解inlining的里里外外 条款31:将文件间的编译依存关系降至最低 6.继承与面向对象设计 条款32:确定你的public...

    Effective C++(第三版)

    条款28:避免返回handles指向对象内部成分 avoid returning “handles” to object internals. 条款29:为“异常安全”而努力是值得的 strive for exception-safe code. 条款30:透彻了解inlining的里里外外 ...

    C++ Multithreading Cookbook [DrLol].pdf

    Chapter 1: Introduction to C++ Concepts and Features 7 Introduction 7 Creating a C++ project 8 Program structure, execution flow, and runtime objects 10 The structural programming approach 14 ...

    Turbo C++ 3.0[DISK]

    Welcome to Turbo C++ Version 3.0 -------------------------------- This README file contains important information about Turbo C++. For the latest information about Turbo C++ and its accompanying ...

    Visual C++音频视频处理技术及工程实践(分卷0)

    本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发...

    Visual C++音频/视频处理技术及工程实践 (分卷1)

    本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发...

    Visual C++音频视频处理技术及工程实践(分卷7)

    本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发...

    C语言中getchar()的返回类型为什么是int详解

    在终端输入字符时并非输入一个字符就会返回,而是在遇到回车换行前,所有输入的在C语言中有个重要的库函数getchar(),可从终端获得一个字符的ASCII码值。在终端输入字符时并非输入一个字符就会返回,而是在遇到回车...

    ExtremeInjector Dll注射器v3.7.3

    Fixed bug that led to many handles being opened unintentionally Migration of Visual C++ resources and version checking to GitHub for more transparency 这是国外大牛By:master131用C#写的Dll注入器

    Visual C++音频/视频处理技术及工程实践(分卷2)

    本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发...

    Visual C++音频视频处理技术及工程实践地址

    本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发...

    c++ exiftool

    The C++ interface for ExifTool provides the source code for a set of objects that allow C++ applications to easily leverage the full power of the exiftool application through a simple interface....

    DevPartner for Visual C++ BoundsChecker Suite 11.3.1812.0 (4)

    DevPartner Studio still handles VS2005, VS2008, VS2010, VS2012 and VS2013. Both 64-bit and 32-bit applications, making it easy for developers to migrate and troubleshoot multiple versions of their ...

    关于Unhandled event loop exception No more handles的两种解决方案

    在使用eclipse的时候,有时候会弹出一个方框,里面的内容是Unhandled event loop exception No more handles,当你点击OK的时候,又会出来一个方框,里面第一句话是 An SWT error has occurred,并且诱导你关闭...

    Turbo C++ 3.00[DISK]

    Welcome to Turbo C++ Version 3.0 -------------------------------- This README file contains important information about Turbo C++. For the latest information about Turbo C++ and its accompanying ...

    跨frame拖拽对象实现的例程

    老外做的一个跨frame拖拽的例程。 挺不错了,有兴趣的朋友可以做个参考。

    Arp.rar_C++ ARP_arp_arp C++_resolution

    This module handles ARP messages and ARP resolution and manages the ARP cache

    Visual C++音频视频处理技术及工程实践(含源码2/2)

    本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发...

    Visual C++ 音频/视频 处理技术及工程实践(分卷3)

    本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发...

    Visual C++音频视频处理技术及工程实践(分卷9)

    本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发...

Global site tag (gtag.js) - Google Analytics