Este obligatoriu sa fie initializate referintele in momentul declararii?
Raspuns
DA, cu exceptia urmatoarelor cazuri:
- este declarata 'extern';
- este parametrul unei functii;
- este tipul de return a unei functii;
- este membrul unei clase.
Code: Select all
int i;
int& r1 = i; // OK: reference has been initalized
int& r2; // Error: references must be initialized
extern int& r3; // OK: 'extern' specifier has been used [1]
void f1(int& r); // OK: it's a function parameter [2]
int& f2(); // OK: it's a return type [3]
class CFoo
{
int& r; // OK: it's a class member [4]
};
- In cazul [4], referintele trebuie initializate in lista de initializare a constructorilor.