Kezdőoldal » Számítástechnika » Programozás » Melyik a helyes válasz?

Melyik a helyes válasz?

Figyelt kérdés

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.



2014. jún. 22. 20:57
 1/6 anonim ***** válasza:
1.
2014. jún. 22. 21:05
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
2.
2014. jún. 23. 09:48
Hasznos számodra ez a válasz?
 3/6 Arneal válasza:

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ó).


[link]

2014. jún. 23. 11:27
Hasznos számodra ez a válasz?
 4/6 iostream ***** válasza:
100%
"In C++, the standard describes the default constructor for a class as a constructor that can be called with no arguments (this includes a constructor whose parameters all have default arguments)."
2014. jún. 23. 12:13
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

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?

2014. jún. 23. 12:21
Hasznos számodra ez a válasz?
 6/6 Arneal válasza:

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).

2014. jún. 23. 12:53
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!