return type (tsz. return types)
int osszeg(int a, int b) {
return a + b; // int típusú értéket ad vissza
}
Ebben az esetben a return type: int
.
C++-ban a visszatérési típus lehet:
Típus | Példa |
---|---|
Egyszerű típus | int , double
|
Osztály | std::string , MyClass
|
Struktúra | struct Pont
|
Pointer | int* , char*
|
Referencia | int& , const T&
|
Void | void (semmit nem ad vissza)
|
void
visszatérési típusOlyan függvényeknél használatos, amelyek nem adnak vissza értéket:
void kiir(int x) {
std::cout << x;
}
by value
):int getSzam() {
int x = 5;
return x; // másolat
}
int& getRef(int& x) {
return x; // ugyanazt az objektumot adja vissza
}
const
visszatérési típusconst std::string& getNev() const;
template<typename T>
T max(T a, T b) {
return (a > b) ? a : b;
}
return type
sablonparaméterből származik.
auto -> T
) – C++11+auto osszeg(int a, int b) -> int {
return a + b;
}
Különösen hasznos sablonos vagy decltype
-os helyzeteknél.
decltype
return typeC++11-ben bevezetve, C++14-től auto
kombinálható vele:
template<typename T1, typename T2>
auto add(T1 a, T2 b) -> decltype(a + b) {
return a + b;
}
auto
return type – C++14-tőlHa auto
a return type, a fordító kikövetkezteti:
auto duplaz(int x) {
return x * 2; // fordító automatikusan: int
}
std::tuple<int, double> getErtekek() {
return {1, 3.14};
}
Vagy saját struktúrával:
struct Eredmeny {
int a;
double b;
};
Eredmeny getEredmeny() {
return {5, 2.71};
}
Helyzet | Figyelni kell |
---|---|
Referencia visszaadás | Ne térj vissza lokális változóra! |
Auto + több return | return típusoknak egyezniük kell |
Const correctness | const T& visszaadás megelőzi véletlen módosítást
|
Fogalom | Leírás |
---|---|
Return type | Függvény visszatérési értékének típusa |
Alap formátum | T f(...) { return ...; }
|
Speciális formák | auto , decltype , const T&
|
Void | Nem tér vissza értékkel |
Fontos hibák | Lokális referencia, típus-inkonzisztencia |