🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #5090

Re: [C++] function overloading en typedef

#5090
From: Bert Peers
Date: Wed, 28 May 2003 20:30
37 lines
2865 bytes
Nicolas Barbier wrote:
 >
>         static Blaat gimme() {
>                 return Blaat(5);
> 
> extern void bliep(const Blaat &b);
> int main()
> {
>         bliep(Blaat(1));
> 
> Hoewel ik had verwacht dat het eerste deel van de functie beter 
> "samengeplakt" zou geworden zijn (de proloog wordt misschien nooit 
> geoptimaliseerd ofzo?), zie je duidelijk dat het object nooit gekopieerd 
> wordt.

Euh, ik kan niet goed volgen vrees ik.  Was het niet je bedoeling
om iets te schrijven als bliep(Blaat::gimme()) ?  Maar dan nog
weet ik niet of dit helpt -- de copy constructor wordt aangeroepen
op het moment dat de return value van de functie in de "recipient"
terecht komt.  Als die recipient enkel een const& nodig heeft,
moet er niks gekopieerd worden.  Ik zou zelfs bijna zeker zeggen,
"..._mag_ er niks gekopieerd worden".

Nu, het klopt wel natuurlijk dat als de compiler kan verifieren
dat die copy constructor geen neveneffecten heeft (bv omdat ie
'm zelf heeft gegenereerd), hij die mag overslaan en de functie
meteen in de recipient mag laten constructen.

> Nog iets dat ik eigenaardig vind: met -fomit-frame-pointer blijft de 
> functie perfect hetzelfde, zou je dan niet verwachten dat die %ebp rommel 
> weggegooid zou worden?

Misschien enkel als er echt een tekort aan registers ontstaat ?
De disassembly blijft toch nog net iets verstaanbaarder met ebp,
vandaar misschien..  kweetniet :)

Bert
Technical Details
Message-ID: <T%8Ba.229391$me2.30588678@amsnews02.chello.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!small1.nntp.aus1.giganews.com!border1.nntp.aus1.giganews.com!nntp.giganews.com!amsnews01.chello.com!amsnews02.chello.com.POSTED!53ab2750!not-for-mail
References: <3ed4a249.0@news.ruca.ua.ac.be> <aC2Ba.24224$1u5.1890@afrodite.telenet-ops.be> <874r3fnqqf.fsf@student.kuleuven.ac.be> <AT2Ba.24246$1u5.1895@afrodite.telenet-ops.be> <3ed50561$0$6523$afc38c87@sisyphus.news.be.easynet.net>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,3077f069a49c0aca
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-05-28 13:30:49 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!small1.nntp.aus1.giganews.com!border1.nntp.aus1.giganews.com!nntp.giganews.com!amsnews01.chello.com!amsnews02.chello.com.POSTED!53ab2750!not-for-mail
From: Bert Peers <spam@spam.spam>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.3) Gecko/20030312
X-Accept-Language: en-us, en, ja
MIME-Version: 1.0
Newsgroups: be.comp.programming
Subject: Re: [C++] function overloading en typedef
References: <3ed4a249.0@news.ruca.ua.ac.be> <aC2Ba.24224$1u5.1890@afrodite.telenet-ops.be> <874r3fnqqf.fsf@student.kuleuven.ac.be> <AT2Ba.24246$1u5.1895@afrodite.telenet-ops.be> <3ed50561$0$6523$afc38c87@sisyphus.news.be.easynet.net>
In-Reply-To: <3ed50561$0$6523$afc38c87@sisyphus.news.be.easynet.net>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 38
Message-ID: <T%8Ba.229391$me2.30588678@amsnews02.chello.com>
Date: Wed, 28 May 2003 20:30:43 GMT
NNTP-Posting-Host: 195.162.217.20
X-Complaints-To: abuse@chello.be
X-Trace: amsnews02.chello.com 1054153843 195.162.217.20 (Wed, 28 May 2003 21:30:43 WEST)
NNTP-Posting-Date: Wed, 28 May 2003 21:30:43 WEST
Organization: chello broadband