-
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!new
s.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.
dca.giganews.com!nntp.giganews.com!nx02.iad01.newshosting.com!newshosting.com!n
ewsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.p
l!news.neostrada.pl.POSTED!not-for-mail
Date: Thu, 16 Sep 2010 17:46:36 +0200
From: klops <k...@k...pl>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.9) Gecko/20100825
Thunderbird/3.1.3
MIME-Version: 1.0
Newsgroups: pl.comp.programming
Subject: Re: Zagwozdka - wyjątek w konstruktorze?
References: <op.vi24nsup8x7o78@notebook>
<4c921c50$0$22795$65785112@news.neostrada.pl> <i6tg8u$172$1@news.onet.pl>
<4c928eb7$0$22812$65785112@news.neostrada.pl> <i6u6a2$ei$1@news.onet.pl>
In-Reply-To: <i6u6a2$ei$1@news.onet.pl>
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 55
Message-ID: <4c9305ac$0$21006$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.20.4.77
X-Trace: 1284703660 unt-rea-a-01.news.neostrada.pl 21006 83.20.4.77:49518
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.comp.programming:186874
[ ukryj nagłówki ]> Standardowym podejściem w sytuacji gdy używamy "gołych" wskaźników i
> wyjątków w jednym miejscu (nie tylko w konstruktorze) jest taki zapis:
Jest coś takiego jak "zdobywanie zasobów jest inicjowaniem" i auto_ptr
wspiera tą technikę. Prawidłowe rozwiązanie tego problemu jest takie:
#include <iostream>
#include <memory>
using namespace std;
char tab[100];
struct Bar{
Bar(){cout <<"Bar"<<endl;}
~Bar(){cout <<"~Bar"<<endl;}
};
class Foo{
auto_ptr<Bar> b;
public:
Foo()
{
b.reset(new Bar());
cout <<"Foo"<<endl;
throw 1;
}
~Foo()
{
cout <<"~Foo"<<endl;
}
static void * operator new (size_t size)
{
cout <<"new"<<endl;
return (Foo*)tab;
}
static void operator delete (void *p, size_t size)
{
cout <<"delete"<<endl;
}
};
main()
{
try{
Foo *f=new Foo();
}
catch(...){
cout <<"catch"<<endl;
}
}
>throw.exe
new
Bar
Foo
~Bar
delete
catch
Następne wpisy z tego wątku
- 17.09.10 06:49 Bronek Kozicki
- 17.09.10 11:00 Michoo
- 17.09.10 11:47 Wojciech \"Spook\" Sura
- 16.09.10 22:00 klops
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-13 Filtr do pompy ruskiej
- 2024-11-12 Gdzie kosz?
- 2024-11-13 elektrycznie
- 2024-11-12 Jebane kurwa, kurwy.
- 2024-11-13 karta parkingowa
- 2024-11-13 Wl/Wyl (On/Off) bialy/niebieski
- 2024-11-12 I3C
- 2024-11-13 Kraków => DevOps Engineer (Junior or Regular level) <=
- 2024-11-13 Łódź => Senior SAP HANA Developer <=
- 2024-11-13 Zabrze => Senior PHP Symfony Developer <=
- 2024-11-13 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-13 Kraków => QA Inżynier <=
- 2024-11-13 Żerniki => Dyspozytor Międzynarodowy <=
- 2024-11-13 Warszawa => Analityk Biznesowo-Systemowy <=
- 2024-11-13 Lublin => Delphi Programmer <=