Megfelelő az alábbi C++ kód? Elvileg lefut hiba nélkül, de nem vagyok benne biztos, hogy helyes ez a használat.
Figyelt kérdés
int a = 10;
class myclass {
public:
void myfunc(int b, int d = a);
};
2012. aug. 21. 20:38
2/3 A kérdező kommentje:
Nem mindegy? Az a lényeg, hogy mit lehet megadni egy osztály tagfüggvényében, mint default argumentum. Konstanson kívül mást is lehet? Tudtommal lehet static tagváltozót, de nem tudom, hogy globális változót lehet-e?
2012. aug. 21. 20:58
3/3 anonim válasza:
Helyes, a default paramétereket behelyettesíti a fordító.
#include <iostream>
using namespace std;
int a = 10;
class myclass {
public:
void myfunc(int b, int d = a){cout << b << "," << d << endl;};
};
int main(){
myclass o;
o.myfunc(2);//o.myfunc(2,a);
a=7;
o.myfunc(5);//o.myfunc(5,a);
o.myfunc(1,3);
}
A metódus nem tudja eldönteni hogy o.myfunc(2) vagy o.myfunc(2,a)-val lett meghívva mivel ezt fordítási időben történik, a fordító minden o.myfunc(2) o.myfunc(2,a)-ra cserél.
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!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!