Article View: pl.comp.lang.c
Article #310340Re: Różne nazwy konstruktora?
From: Przemek Biernat
Date: Wed, 29 Mar 2023 17:27
Date: Wed, 29 Mar 2023 17:27
61 lines
3471 bytes
3471 bytes
On Wednesday, December 23, 2020 at 3:22:35 AM UTC+1, M.M. wrote:
> On Monday, December 7, 2020 at 9:10:09 PM UTC+1, Wojciech Muła wrote:
> > On Monday, December 7, 2020 at 8:05:03 PM UTC+1, Borneq wrote:
> > > W starym Pascalu choćby konstruktor może mieć różne nazwy. W C++ może
> > > być wiele konstruktorów różniących się parametrami.
> > > Jednak czasem potrzeba by były różne nazwy.
> > > Taki przykład:
> > > Liczba zespolona, ma pola Re i Im. Inicjuje się tymi dwiema liczbami, a
> > > chciałbym jeszcze inicjować przez promień i kąt.
> > > Co warto zrobić?
> > 1. Statyczna metoda
> >
> > class Complex {
> > public:
> > Complex(double re, double im);
> > static Complex from_polar(duoble mod, double arg);
> > }
> >
> > 2. Specjalizacja z własnym typem
> >
> > struct UsePolarCoordsPlease {};
> >
> > UsePolarCoordsPlease from_polar;
> >
> > class Complex {
> > public:
> > Complex(double re, double im);
> > Complex(double mod, double arg, UsePolarCoordsPlease);
> > };
> >
> > Complex a{1, 2};
> > Complex b{5, 12, from_polar};
> >
> > 3. Wprowadzić osobny typ do przechowywania kątów, który nie jest domyślnie
> > konwertowalny na liczbę i wtedy robisz specjalizacje dla niego. Ale to już
> > zdecydowanie najwięcej zabawy.
> >
> > w.
> Trochę inne zagadnienie związane z konstruktorami, które zawsze mnie denerwowało w C++.
> Poniższy kod w C++ się nie skompiluje:
>
> class A {
> int a;
> public:
> A(const int a):a(a) {
> }
> };
> class B : public A {
> };
> int main()
> {
> B b(3);
> return 0;
> }
>
> Natomiast odpowiedni kod w PHP działa bez zarzutu. Co by było złego, gdyby w C++
> konstruktory 'były dziedziczone' ?
>
> Pozdrawiam
Nie rozumiem dlaczego ciebie to denerwuje. Normalne zachowanie w C++.
Technical Details
Message-ID:
<4a9c0cf2-14b2-4e89-b36e-f6263eb92504n@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!3.us.feeder.erje.net!news.misty.com!1.us.feeder.erje.net!feeder.erje.net!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<5fce7cbf$0$554$65785112@news.neostrada.pl> <48755639-7648-40b4-a759-609bafdc9f05n@googlegroups.com> <efaebb19-3d42-4280-9763-b6e4591fbef9n@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:622a:1491:b0:3db:a6c5:cdb7 with SMTP id t17-20020a05622a149100b003dba6c5cdb7mr7077092qtx.5.1680110875739; Wed, 29 Mar 2023 10:27:55 -0700 (PDT) X-Received: by 2002:a05:6871:d96:b0:17e:1aaf:eb88 with SMTP id vi22-20020a0568710d9600b0017e1aafeb88mr6374968oab.3.1680110873982; Wed, 29 Mar 2023 10:27:53 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!3.us.feeder.erje.net!news.misty.com!1.us.feeder.erje.net!feeder.erje.net!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Wed, 29 Mar 2023 10:27:53 -0700 (PDT) In-Reply-To: <efaebb19-3d42-4280-9763-b6e4591fbef9n@googlegroups.com> Injection-Info: google-groups.googlegroups.com; posting-host=193.238.201.2; posting-account=JqeG5AoAAAAiFyQBrqF1gF5A1eLVPTrJ NNTP-Posting-Host: 193.238.201.2 References: <5fce7cbf$0$554$65785112@news.neostrada.pl> <48755639-7648-40b4-a759-609bafdc9f05n@googlegroups.com> <efaebb19-3d42-4280-9763-b6e4591fbef9n@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <4a9c0cf2-14b2-4e89-b36e-f6263eb92504n@googlegroups.com> Subject: Re: Różne nazwy konstruktora? From: Przemek Biernat <biernat.przemyslaw@gmail.com> Injection-Date: Wed, 29 Mar 2023 17:27:55 +0000 X-Received-Bytes: 3503 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit