From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,56131a5c3acc678e X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-12-04 11:29:54 PST Path: archiver1.google.com!news2.google.com!newsfeed2.dallas1.level3.net!news.level3.com!news-out.visi.com!petbe.visi.com!ash.uu.net!spool.news.uu.net!not-for-mail Date: Thu, 04 Dec 2003 14:29:53 -0500 From: Hyman Rosen User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031013 Thunderbird/0.3 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Question about OO programming in Ada References: <8urxb.19482$sb4.18182@newsread2.news.pas.earthlink.net> <1792884.HtYz4Yv8lY@linux1.krischik.com> <1070466281.168920@master.nyc.kbcfp.com> <1070490862.478119@master.nyc.kbcfp.com> <2prtsvgmt5lt3u1ulb5dvh8ba5nulfl3l3@4ax.com> In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Organization: KBC Financial Products Message-ID: <1070566194.102691@master.nyc.kbcfp.com> Cache-Post-Path: master.nyc.kbcfp.com!unknown@nightcrawler.nyc.kbcfp.com X-Cache: nntpcache 3.0.1 (see http://www.nntpcache.org/) NNTP-Posting-Host: 204.253.250.10 X-Trace: 1070566194 5873 204.253.250.10 Xref: archiver1.google.com comp.lang.ada:3135 Date: 2003-12-04T14:29:53-05:00 List-Id: Randy Brukardt wrote: > I'd expect that to be true in C++ as well -- or does C++ not even allow > statically allocated class objects and class components? (If they always > have to be allocated from the heap, there is no problem.) C++ does allow for statically allocated objects. For objects which manage their own lifetime, you would like to disable that, and how to do that is an FAQ. You make the destructor and the array allocator private: class heap_only { ~heap_only() { } void *operator new[](size_t); public: free() { delete this; } }; Now you can say heap_only *p = new heap_only; // allocate one p->free(); // free it but not heap_only h; // error - can't access destructor