🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4564

C++ i friends

#4564
From: Marilyn Manson
Date: Fri, 15 Jan 1999 18:02
52 lines
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-mail

Show 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