Article View: pl.comp.objects
Article #4564C++ i friends
From: Marilyn Manson
Date: Fri, 15 Jan 1999 18:02
Date: Fri, 15 Jan 1999 18:02
52 lines
2311 bytes
2311 bytes
Aaaa juz wiem. :)
Panowie ostatnio przyznaliscie, ze specyfikujac klase A jako friend klasy B
udostepniamy klasie B wszystkie pola i metody klasy A. No wedlug mnie to
jest dosc rozsadne, w pelni logiczne; co wiecej, zobaczylem, ze to prawda
(wczesniej zle odczytalem message od kompilatora). Lecz teraz, ten message
jeszcze bardziej mnie zaskoczyl.
Otoz mamy w jakims tam pliku nagloofkowym *.h:
class klasa0
{
friend klasa1;
//***etykieta0***
klasa0();
}
class klasa1
{
klasa0 obiekt;
//***etykieta1***
}
a w glownym pliku yes:
void main()
{
klasa1 objjekt;
}
i kompilator tfierdzi, ze za chiny nie moze, a co nie moze? otoz: COMPILER
COULD NOT GENERATE DEFAULT CONSTRUCTOR FOR CLASS 'klasa1'
Malo tego, teraz lepsze. Jesli w miejsce etykieta0 wpiszemy specyfikator
public: wszystko chodzi idealnie i kompilator nawet nie smie sie odezwac.
Wniosek: przyjmuje konstruktor klasy0 jako default konstruktor klasy1. (hmm
widocznie Stroustrup duzo nad tym myslal i wyszlo mu, ze tak bedzie lepiej)
Teraz jesli z etykiety0 usuniemy public:, a w etykiete1 wpiszemy public:
klasa1(){}; wszystko sie dobrze buja, ale mysle, ze z oczywistych powodow.
Natomiast jesli usuniemy wszystkie konstruktory tez bedzie ok.
Wniosek ogolny: jesli klasa0 yes friendem klasy1 (ma w sobie text "friend
klasa1;") i ma konstruktor, to klasa1 musi miec tez swoj konstruktor
(publiczny w tym porzypadku, ale to niewazne), poniewaz inaczej kompilator
uzyje konstruktora klasy0 jako konstruktora klasy1. (i nasuwa sie pytanie
WHY??????)
Podstawowe pytanie: CZY DOBRZE ROZUMUJE?
z powazaniem
manson
Technical Details
Message-ID:
<77nvrc$b30$1@sun1000.pwr.wroc.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.nask.pl!ict.pwr.wroc.pl!pwr.wroc.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.nask.pl!ict.pwr.wroc.pl!pwr.wroc.pl!not-for-mail From: "Marilyn Manson" <manson@tower.t16.ds.pwr.wroc.pl> Newsgroups: pl.comp.objects Subject: C++ i friends Date: Fri, 15 Jan 1999 19:02:52 +0100 Organization: Technical Univeristy of Wroclaw Lines: 54 Message-ID: <77nvrc$b30$1@sun1000.pwr.wroc.pl> NNTP-Posting-Host: manson.t16.ds.pwr.wroc.pl X-Newsreader: Microsoft Outlook Express 4.72.3110.5 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit