Junior
Ako sa nazýva alternatíva na odovzdávanie hodnôt namiesto odkazov v C/C++?
sobes.tech AI
Odpoveď od AI
Prenos hodnoty pomocou odkazov na konštantné objekty.
void process_value(const MyObject& obj) {
// Pracujeme s obj, ako keby bol odovzdaný hodnotou
// (zmeny sú nemožné vďaka const),
// ale vyhýbame sa kopírovaniu veľkého objektu.
// Táto funkcia NEMÔŽE zmeniť stav objektu, na ktorý odkazuje obj.
}
// Príklad použitia:
MyObject large_object;
process_value(large_object); // large_object sa nekopíruje
Výhody oproti odovzdaniu hodnotou:
- Vyhýba sa nákladnému kopírovaniu veľkých objektov, čo zlepšuje výkon.
- Zachováva semantiku odovzdania hodnotou z hľadiska nezmeniteľnosti vo vnútri funkcie.
Nevýhody oproti odovzdaniu hodnotou:
- Vyžaduje špeciálnu syntax
const &v podpise funkcie. - Ak je objekt veľmi malý (napríklad primitívny typ
int), odovzdanie hodnotou môže byť rýchlejšie kvôli potenciálnym nákladom na dereferenciu referencie.