Kezdőoldal » Számítástechnika » Programozás » C++ nyelvben hogy tudom egy...

C++ nyelvben hogy tudom egy dinamikus tömb elemeit úgy inicializálni, hogy legyen benne ősosztály meg leszármaztatott osztály is?

Figyelt kérdés

Valami ilyesmire gondoltam, de ez így konkrétan nyilván nem működik:

vehicle* vehicles = new vehicle[2]{new truck{"DAF","XF 105", 5.96}, new bus{"Credo","EC 11", 10.6}};



#C++ #ősosztály #származtatott osztály
2022. márc. 11. 11:32
 1/5 anonim ***** válasza:
41%
2022. márc. 11. 11:39
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
Csak std::vectorral lehet ilyet csinálni? Dinamikus tömbbel nem lehet valahogy megoldani?
2022. márc. 11. 12:01
 3/5 anonim ***** válasza:
58%

de, meg lehet:


#include <string>


struct A{

int x;

};


struct B : public A {

int y;

};


struct C : public A {

std::string str;

};



int main() {


A* a[2];

a[0] = new B();

a[1] = new C();

}


ha ezt várják el tőled (pl suliban)

viszont azért megjegyezném, hogy a modern c++ban annyi eszköz van ami megkönnyíti a dolgod (konténerektől az okospointerekig), amiknek érdemes utána nézni.

2022. márc. 11. 12:27
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
És ilyenkor ha tolok egy delete[] operátort, akkor vajon csak az ősosztály destruktora fut le, vagy a származtatotté is?
2022. márc. 11. 13:07
 5/5 anonim ***** válasza:

Ha virtuálisan meg van írva rendesen, ahogy kell, akkor a leszármazotté is.

Ha nem virtuális, akkor csak az ősé.

2022. márc. 11. 17:27
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!