D语言中的简单运算符重载会引发异常

0 d exception operator-overloading

这段代码:

class C 
{
    int opAdd(C b) { return 1; }
    private int j;
}

void main() 
{
    C a;
    C c;

    int j = a + c;
}
Run Code Online (Sandbox Code Playgroud)

抛出:

"object.Exception: Access Violate - Read at address 0x0"
Run Code Online (Sandbox Code Playgroud)

Vla*_*eev 6

D中的是引用类型.您需要实例化它们:

C a = new C();
C b = new C();
Run Code Online (Sandbox Code Playgroud)

此外,opAddopBinary!"+"在D2中替换(参见D2运算符重载).

  • @DanDonnelly发布一个单独的问题,如果你想要一个详细的答案.有办法做到这一点,但通常你不这样做.他们真的不属于那里. (4认同)