[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: (OT) Re: memory management










Pierre Phaneuf <pp@ludusdesign.com> on 07/09/99 15:11:42

Please respond to linuxgames@sunsite.auc.dk

To:   linuxgames@sunsite.auc.dk
cc:    (bcc: Keith Lucas/Restricted/Cumbernauld/Atlantech)

Subject:  Re: (OT) Re: memory management



Keith Lucas wrote:

On a more serious take:

> I've tried it and honestly wouldn't recommend it. For one thing, a base
> object heavyweight enough to support persistence and so on is probably
> overkill for the kinds of lightweight objects you want to be throwing around
> inside the program (bear in mind you're going to want to return things by
> value sometimes).

Personally, here's my base object:

class Object {
public:
  virtual ~Object {};
};

>Is that lightweight enough for you? Does two things: enables general
>containers by having a type compatible with all the other ones and makes
>destructor works correctly

OK, it's lightweight but it's not actually that useful. You might as well have
the containers use void* pointers for all the benefit you get - the run-time
dynamic casting will still tell you if it's a valid pointer to a
Object:foo:bar:wibble:concrete:myclass or not.

It could at least support creation by string name... but then it starts getting
heavyweight again.

>(damn C++, why isn't "virtual" the friggin' DEFAULT???).

I agree. It should be. Certainly in classes. I could see a point for it not
being in structures - same as they have different visibility defaults.