Melyik a helyes válasz?
Melyik igaz az alábbiak közül?
struct X
{
X(int i = 0) {}
};
A fenti struct-nak van default konstruktora.
A fenti struct-nak nincs default konstruktora.
A fenti struct-nak nincs copy konstruktora.
A fenti struct-nak csak default konstruktora van.
Ez értelmezés függő...általában default constructor alatt paraméter nélkül hívható constructort értenek, ekkor 1. viszont vannak, akik csak az automatikusan generált konstrktort értik alatt, ekkor meg a 2. lenne a helyes.
Én személy szerint elsőt mondanék és szerintem az az elterjedtebb (nem az a lényegi különbség, hogy most a program "írta" vagy te, hanem hogy paraméter nélkül hívható).
Ha C++ akkor a 2. az igaz.
Alapesetben van default (üres) konstruktor. Ha megadsz legalább egy konstruktort onnantól kezdve nincs default.
Gondolj bele, ha nem így lenne, mi lenne akkor ha mondjuk nem akarsz default konstruktort, vagy el akarod rejteni? Ha minden esetben lenne egy, hogy tiltanád le?
Pont, hogy a C++ standard szerint az első igaz, gyakorlatban viszont nem feltétlenül így használják a szót.
A leírtaknak meg egyrészt semmi köze nincs ahhoz, hogy a default constructor alatt most paraméter nélkül (default meghívodó) vagy az alapértelmezett constructort (default meglévő) értünk.
Nem mellesleg C++11 óta létezik MyClass() = delete;, illetve az is egy járható út lett volna, hogy saját kezűleg kell kitörölni mindig, csak ez éppen kényelmesebb volt - de ez magában még nem következik szükségszerűen abból, hogy létezik egy alapértelmezett constructor. (nyilván ehhez már előbb is lehetőve kellett volna a tenni a delete-t).
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!