🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #310337

Re: Różne nazwy konstruktora?

#310337
From: M.M.
Date: Wed, 23 Dec 2020 02:22
59 lines
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-mail
References: <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