Why structs and classes instanciations are made differently ?
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Jul 26 11:44:22 PDT 2017
On 07/26/2017 02:54 AM, Houdini wrote:
> On Tuesday, 25 July 2017 at 17:16:00 UTC, Kagamin wrote:
>> On Tuesday, 25 July 2017 at 15:56:45 UTC, Houdini wrote:
>>> Yes, but it isn't the default way in C++ to do dynamic instanciation.
>>
>> https://github.com/isocpp/CppCoreGuidelines this? It's only 2 years
>> old. The new operator predates it by decades.
>
> I meant :
>
> When you need to instantiate a class, you usually do :
>
> MyClass a;
>
> and not :
>
> MyClass* a = new MyClass();
>
> You're in a value model.
That's my experience as well. However, stack class objects are rare and
to repeat Steven, it comes with the problem of slicing. Only after
learning D that I realized there were two kinds of C++ types in my code:
value types and reference types, latter of which I've achieved with
boost::shared_ptr<C>. So, I think D's separation is the right choice.
However, classes are unnecessarily expensive due to that 'monitor'
member and carry the mistakes of OOP models adopted by Java, C++, and
others. I say this under the influence of open multi-methods[1] and
anemic domain models[2].
Ali
[1] http://forum.dlang.org/thread/cigbfrgipbokyetskypk@forum.dlang.org
[2] https://www.meetup.com/D-Lang-Silicon-Valley/events/228027468/
More information about the Digitalmars-d-learn
mailing list