【问题标题】:How can I see all functions of a class?如何查看一个类的所有功能?
【发布时间】:2015-02-05 17:24:23
【问题描述】:

主要是我想看看编译器生成的函数(默认构造函数、复制构造函数、赋值运算符、移动赋值、析构函数)。
只是想看看编译器为我生成了哪些函数。

我以为我可以在符号表中看到这一点,但我无法在名称修改的符号表中发现它们。我可以看到我定义的其他函数,但我不知道如何找到构造函数等。

有没有更好的方法来查看哪些函数与一个类相关联?

【问题讨论】:

  • 我希望这个类似的帖子可以帮助你接近,link

标签: c++ default-constructor symbol-table


【解决方案1】:

你的想法有问题:

编译器将在允许时隐式声明特殊函数。
但它只会隐式定义它们,前提是它们被 ODR 使用。

此外,该用法可能已被内联,因此可能找不到符号。

因此,找出编译器将按需生成哪些函数的唯一故障安全方法是尝试使用它们。
虽然知道规则并手动检查就足够了,但它们很容易。

【讨论】:

  • 谢谢。似乎真的没有一个很好的方法来检查这个。可能是看拆机?看看某处是否有 JUMP 调用?
  • @madu:关键是即使编译器可以生成这些隐式特殊函数,它们也可能不存在,或者因为它们从来不需要,或者因为每次使用都是内联的,所以没有什么可做的找到。
  • 谢谢。我知道有不同的情况。我想看到的至少是有一个空类,在这种情况下不会生成任何函数。但是如果我添加一个虚函数,那么编译器将放置一个构造函数来创建 vtable(例如)。我想看看编译器生成 const 的这种情况。为了我。但正如你所说,它可以是内联的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 2018-12-02
相关资源
最近更新 更多