首页 > 编程语言 >Effective C++ - 条款28 - 不要返回指向对象内部成分的handle

Effective C++ - 条款28 - 不要返回指向对象内部成分的handle

时间:2022-11-20 23:55:13浏览次数:47  
标签:const Effective 指向 pgo 28 C++ 成分 boundingbox handle

这一条还是比较简单的,就是说不要返回指向对象内部成分的引用、指针等,即便这个引用可能声明为const(或指针指向了const对象),对内部成分做了保护,但仍有可能造成handle空悬(称为danling)。

为此,举了一个例子:

class GUIobject {};
const Rectangle boundingbox(const GUIobject &obj);

Guiobject *pgo;
const Point * upleft = &(boundingbox(*pgo).upperLeft()); // 注意这里

最后一行代码结束后,boundingbox()的返回值会被析构,那么upleft所指向的成员也不复存在,造成dangling.

标签:const,Effective,指向,pgo,28,C++,成分,boundingbox,handle
From: https://www.cnblogs.com/ijpq/p/16910078.html

相关文章

  • NUCLEO-F042K6驱动的彩色灯环(WS2812)
    NUCLEO-F042K6驱动的彩色灯环(WS2812)NUCLEO-F042K6是STMicroelectronics出品的Nucleo系列开发板之一,MCU为Cortex-M0核心的STM32F042K6。WS2812是常用的集成驱动电路的16M色LE......
  • Visual C++ 6.0 Cl.exe命令启动失败解决方案
    如果想编译32位的WinC程序,选择VisualC++6.0是个不错的选择,相对VisualStudio更轻量化。一般我喜欢用命令行来生成程序,这样有时候需要批量化操作的时候更方便。安装了V......
  • C++ 读取文件及保留小数方法
    C++读取文件及保留小数方法做图论作业时,需要从文件中读取整型数据。之前都是在标准输入输出流中读取和输出。今小记一下。读取文件使用文件流ifstream最简洁的方法是......
  • [排序算法] 快速排序 (C++) (含三种写法)
    快速排序解释快速排序QuickSort与归并排序一样,也是典型的分治法的应用。(如果有对归并排序还不了解的童鞋,可以看看这里哟~归并排序)❤❤❤快速排序的分治模式1、......
  • C++ 继承和派生的简单应用
    Father.h:#pragmaonce#include<iostream>#include<string>usingnamespacestd;classFather{public:Father();Father(conststring&name,intage);......
  • 利用xmake在c++项目中编译与调用webassmebly
    最近在尝试用webassembly替代lua作为c++程序的脚本。刚好xmake也支持了webassembly的编译。下面是踩坑记录。项目需要两个target:一个c++项目、一个webassembly项目。需要......
  • linux 多线程 c++2
    为了在用线程分离的时候保证即使主线程退出了,子线程还能正常运行,可以使用pthread_exit(NULL)去退出主线程,这样地址空间还能正常存在线程分离是为了保证主线程不会被堵塞,还能......
  • C++ Tips:signed main 和 int main 的区别?
    #include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){return0;}注意到#defineintlonglong而main函数必须返回一个in......
  • 28-网络文件共享和实时同步
    NAS存储NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上。与DAS以及SAN不同,NAS是文件级的存储方法。采用NAS较多的功能是用来进行文件共享。NAS......
  • c++:模板
    一、模板的基本概念c++除了面向对象的编程思想之外,还有泛型编程,主要技术是模板。c++提供两种模板机制:函数模板,类模板。函数模板:建立一个通用函数,其函数返回值和形参类型......