Article View: pl.comp.lang.c
Article #310337Re: Różne nazwy konstruktora?
From: M.M.
Date: Wed, 23 Dec 2020 02:22
Date: Wed, 23 Dec 2020 02:22
59 lines
3049 bytes
3049 bytes
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
Technical Details
Message-ID:
<efaebb19-3d42-4280-9763-b6e4591fbef9n@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.samoylyk.net!news.uzoreto.com!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.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>Show Full Headers
Complete Article Headers
X-Received: by 2002:ad4:4e8a:: with SMTP id dy10mr24822552qvb.14.1608690154112; Tue, 22 Dec 2020 18:22:34 -0800 (PST) X-Received: by 2002:aed:2ba5:: with SMTP id e34mr24417678qtd.146.1608690153893; Tue, 22 Dec 2020 18:22:33 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.samoylyk.net!news.uzoreto.com!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Tue, 22 Dec 2020 18:22:33 -0800 (PST) In-Reply-To: <48755639-7648-40b4-a759-609bafdc9f05n@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=178.37.237.187; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj NNTP-Posting-Host: 178.37.237.187 References: <5fce7cbf$0$554$65785112@news.neostrada.pl> <48755639-7648-40b4-a759-609bafdc9f05n@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <efaebb19-3d42-4280-9763-b6e4591fbef9n@googlegroups.com> Subject: Re: Różne nazwy konstruktora? From: "M.M." <mmarszik@gmail.com> Injection-Date: Wed, 23 Dec 2020 02:22:34 +0000 Lines: 65 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit