27得票2回答
通过编译器生成的本地变量将可空结构隐式转换为System.Double:为什么会失败?

给定以下代码,为什么会抛出 InvalidCastException 异常?我看不出来除了 BUG 之外还有其他原因(这段代码在 x86 上运行正常,但在 x64 上会崩溃,并显示 clrjit.dll 中的 0xC0000005 异常)。class Program { static ...

18得票2回答
了解dotPeek反编译代码中生成的编译器类型

嗨。我正在阅读Digi Traffic Accelerator的反编译源代码(我认为这是学习的最佳方式),直到我遇到了一些无法理解的代码!请看: internal class ProxyFarm { private static Random rand = new Random(...

11得票1回答
为什么异步/等待状态机会生成一个名为“flag”的布尔变量?

如果您编译以下代码:private async Task<int> M() { return await Task.FromResult(0); } 然后对其进行反编译(我使用了dotPeek),并检查极其重要的MoveNext方法,您会看到一个在开头附近声明的bool变量...

9得票2回答
这段代码会生成一个materialized base prvalue吗?它应该可以编译吗?

以下代码在gcc 9.1 godbolt编译通过,但在clang 8 godbolt中无法编译: class A { protected: ~A() = default; }; class B final : public A { }; int main() { auto...

8得票7回答
编译器生成的默认构造函数会是公共的吗?

当我编写一个名为Widget.java的类时 public class Widget { int data; String name; } 编译器生成的构造函数是public还是default? 如果是public,则如下所示: public class Widget...

8得票4回答
基于其他运算符,是否会自动提供任何C++运算符重载?

如果我编写一个包装器来包装int类型,并需要提供每一个运算符重载,那么作者是必须列出每一个运算符的吗?还是可以根据作者提供的内容自动生成任何一个运算符,编译器是否能够推断出新的自动定义运算符? 如果我定义了operator==,它会自动给我生成operator!=吗?反之呢? 如果我定义了...

7得票4回答
一个抽象基类的编译器生成的析构函数会是虚函数吗?

class Base { virtual void foo() = 0; //~Base(); <-- No destructor! }; 显然,Base将被派生。那么,C++是否要求编译器生成的Base析构函数必须是虚拟的? 谢谢!