Sdílet prostřednictvím


Funkce vrátí typ odkazu

Funkce mohou být deklarovány vrátit typ odkazu.Existují dva důvody, aby toto prohlášení:

  • Informace vrácené je dostatečně velký objekt, který vrací odkaz je efektivnější než vykazujících kopii.

  • L hodnota musí být typu funkce.

Stejně jako může být efektivnější předat velké objekty na funkce odkazem také může být efektivnější vrátit velké objekty z funkce odkazem.Odkaz return protokol eliminuje nutnost kopírování objektu do dočasného umístění před návratem.

Odkaz return typů může být užitečné také při l hodnota musí být funkce.Nejvíce přetížené operátory do této kategorie patří zejména operátor přiřazení.Overloaded operátory jsou zahrnuty v Přetížené operátory.

Příklad

Zvažte Point Příklad:

// refType_function_returns.cpp
// compile with: /EHsc

#include <iostream>
using namespace std;

class Point
{
public:
// Define "accessor" functions as
//  reference types.
unsigned& x();
unsigned& y();
private:
unsigned obj_x;
unsigned obj_y;
};

unsigned& Point :: x()
{
return obj_x;
}
unsigned& Point :: y()
{
return obj_y;
}

int main()
{
Point ThePoint;
// Use x() and y() as l-values.
ThePoint.x() = 7;
ThePoint.y() = 9;

// Use x() and y() as r-values.
cout << "x = " << ThePoint.x() << "\n"
<< "y = " << ThePoint.y() << "\n";
}

Výsledek

x = 7
y = 9

Všimněte si, že funkce x a y jsou deklarovány jako referenční typy návratu.Tyto funkce lze na každé straně příkazu přiřazení.

Deklarace typu odkaz musí obsahovat Inicializátory s výjimkou těchto případů:

  • Explicitní extern prohlášení

  • Deklarace člena třídy

  • Prohlášení v rámci třídy

  • Prohlášení pro funkci nebo návratový typ argumentu pro funkci

Viz také

Referenční dokumentace

Odkazy (C++)