我最近开始使用 Tango 库学习 D 版本 1。我决定编写一个小类Dout
来包装tango.io.Stdout
,但它会覆盖opShl
以更好地匹配 C++ 的<<
样式输出。我的实现是这样的:
// dout.d
module do.Dout;
import tango.io.Stdout;
class Dout
{
public static Dout opShl(T) (T arg)
{
stdout(arg);
return new Dout;
}
public static Dout newline()
{
stdout.newline;
return new Dout;
}
}
总的来说,我对 Dout.opShl() 做了一个简单的调用,就像这样。
// main.d
import do.Dout;
import tango.io.Console;
int main(char[][] argv)
{
Dout << "Hello" << " world!" << Dout.newline;
Cin.get();
return 0;
}
这可行,但在按下回车键并退出 main 后,会打印文本“do.Dout.Dout”。单步执行代码后,我发现在汇编指令处打印了这段文字:
00406B5C call __moduleDtor (40626Ch)
其中 do.Dout 的析构函数被调用。
我的问题是,为什么在退出 main 时会打印模块名称,我能做些什么来阻止这种行为?