Я недавно начал изучать D версию 1, используя библиотеку Tango.Я решил написать небольшой класс 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;
}
Это работает, но после нажатия Enterи выходя из main, выводится текст «do.Dout.Dout».Пройдя по коду, я обнаружил, что этот текст напечатан в инструкции по сборке:
00406B5C call __moduleDtor (40626Ch)
В которой вызывается деструктор do.Dout.
Myвопрос в том, почему имя модуля печатается при выходе из main, и что я могу сделать, чтобы остановить это поведение?