Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

lista inicjalizacyjna - pytanie

10 views
Skip to first unread message

Jivanmukta

unread,
Mar 3, 2023, 11:11:30 AM3/3/23
to
Uczę się C++.
Jeżeli zamiast pisać:

class C {
int m;
public:
C(int v) : m(v) {}
};

możemy pisać:

class C {
int m;
public:
C(int v) { m = v; }
};

to po co w ogóle jest lista inicjalizacyjna w kontruktorze?

--
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie antywirusowe AVG.
www.avg.com

Paavo Helde

unread,
Mar 3, 2023, 12:05:23 PM3/3/23
to
03.03.2023 18:11 Jivanmukta kirjutas:
> Uczę się C++.
> Jeżeli zamiast pisać:
>
> class C {
> int m;
> public:
>     C(int v) : m(v) {}
> };
>
> możemy pisać:
>
> class C {
> int m;
> public:
>     C(int v) { m = v; }
> };
>
> to po co w ogóle jest lista inicjalizacyjna w kontruktorze?

Antud näite puhul ei ole erilist vahet, mida kasutada, aga üldiselt
tuleks initsialiseerimiseks kasutada initsialiseerijate loendit, selle
jaoks on see mõeldud.


Christian Gollwitzer

unread,
Mar 3, 2023, 3:51:00 PM3/3/23
to
Am 03.03.23 um 18:05 schrieb Paavo Helde:
I can't read the Finish one, but the Polish question (probably
accidentally) asks what is the difference between the initializer and
what is it good for, if we can simply use the assignemnt.

The answer is that in some cases, there is a difference between calling
the constructor and assigning. E.g.

std::vector<int> v(30);

vs.

std::vector<int> v;

v = ... ; // now what?

In this case it might simply be inefficient, in other cases impossible
to assign - e.g. with a reference variable.


Christian

Mut...@dastardlyhq.com

unread,
Mar 4, 2023, 4:53:11 AM3/4/23
to
On Fri, 3 Mar 2023 21:50:43 +0100
Christian Gollwitzer <auri...@gmx.de> wrote:
>Am 03.03.23 um 18:05 schrieb Paavo Helde:
>> 03.03.2023 18:11 Jivanmukta kirjutas:
>>> Uczę się C++.
>>> Jeżeli zamiast pisać:
>>>
>>> class C {
>>> int m;
>>> public:
>>>      C(int v) : m(v) {}
>>> };
>>>
>>> możemy pisać:
>>>
>>> class C {
>>> int m;
>>> public:
>>>      C(int v) { m = v; }
>>> };
>>>
>>> to po co w ogóle jest lista inicjalizacyjna w kontruktorze?
>>
>> Antud näite puhul ei ole erilist vahet, mida kasutada, aga üldiselt
>> tuleks initsialiseerimiseks kasutada initsialiseerijate loendit, selle
>> jaoks on see mõeldud.
>
>I can't read the Finish one

Google translate is a very useful tool:

In the case of the given example, it doesn't really matter which one to use,
but in general a list of initializers should be used for initialization, this
it is intended for.


0 new messages