struct constructors and destructors.
Danni Coy via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 20 02:09:42 PDT 2017
On Thu, Jul 20, 2017 at 12:19 AM, SrMordred via Digitalmars-d <
digitalmars-d at puremagic.com> wrote:
> On Wednesday, 19 July 2017 at 14:09:32 UTC, SrMordred wrote:
>
>> On Wednesday, 19 July 2017 at 09:09:40 UTC, Stefan Koch wrote:
>>
>>> On Wednesday, 19 July 2017 at 07:48:28 UTC, Danni Coy wrote:
>>>
>>>> Is there a reason that the following code
>>>>
>>>> struct Foo
>>>> {
>>>> this (string name)
>>>> { do_something(name); }
>>>>
>>>> ~this()
>>>> { undo_something(); }
>>>> }
>>>>
>>>> Foo foo = void;
>>>>
>>>> void open()
>>>> {
>>>> foo = Foo("test"); // <- this line
>>>> }
>>>>
>>>> tries to OpAssign foo to itself then calls foo's destructor?
>>>>
>>>
>>> What happens is this.
>>>
>>> void open()
>>> {
>>> foo = () {
>>> Foo _tmp = Foo.__ctor("test");
>>> return _tmp;
>>> } ();
>>> }
>>>
>>
>> Hm, isnt that wrong?
>> If I destroy resources on the dtor, wouldn't it invalidate the resource
>> on the copy?
>> Also, C++ behaves differently
>>
>
> No Sorry, it behaves almost the same.
> just in D ctor and dtor are not called on declaration even if you drop " =
> void".
>
Is there a way to delay the initialisation of a struct?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20170720/b5cb31c5/attachment-0001.html>
More information about the Digitalmars-d
mailing list