gpt4 book ai didi

c++ - 在构造函数中记录 this 的值是否安全

转载 作者:太空宇宙 更新时间:2023-11-03 10:33:16 24 4
gpt4 key购买 nike

我正在跟踪构造函数及其析构实例,为此我计划在构造函数和析构函数中记录“this”的值。我不知道在构造函数中记录“this”的值是否安全。如果它不安全,那么我不想知道它会在哪些情况下失败?

最佳答案

如果“记录”是指“将值作为例如十六进制地址写到日志文件”,那很好而且安全。如果不是,请澄清。

在构造函数调用完成之前,对象不会完全构造。所以在此之前(即从构造函数中)将 this 发布到程序的其余部分是不安全的。因为这可能会导致有人试图实际使用半构建的对象。这可能会导致微妙且难以发现的错误。

发布 this 可能意味着以下情况之一:

  • 将其作为参数传递给外部(非成员)函数,
  • 将其存储在其他对象可用的数据结构中,
  • (为了完整起见:从函数调用返回它 - 这不适用于这种特定情况,因为您不能从构造函数返回任何东西)。

因此,将 this 的地址写到文件中不会将其发布到程序的其余部分*,因此应该没问题。

*好吧,除非你之后做了一些非常神秘的事情,比如在不同的线程/进程中从文件中加载回地址并将其转换回对象指针......这本身就已经很不安全了:-)

关于c++ - 在构造函数中记录 this 的值是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com