Jak rozpoznać, czy zwracana jest referencja czy wartość?

0

Załóżmy następującą sytuację:

class KLASA
{
//Zawartość klasy.
};

KLASA& operator@ (KLASA& K1,KLASA& K2)
{
//Definicja operatora @.
}

gdzie @ jest dowolnym operatorem dwuargumentowym oraz, że nie znam implementacji klasy KLASA.

Jak w takiej sytuacji rozpoznać, co zwraca operacja

K1 @ K2

, gdzie K1 i K2 są obiektami klasy KLASA? Chodzi mi konkretnie o rozpoznanie, czy operator @ zwraca referencję do obiektu K1, czy referencję do obiektu K2 czy też po prostu wartość nie będącą referencją? Czy jest to w ogóle możliwe?

Chodzi mi o uniwersalną metodę, która działałaby zarówno dla typów wbudowanych jak i definiowanych przez użytkownika.

0

Już rozwiązałem problem. :) Dla zainteresowanych:

KLASA K1,K2;
const KLASA& K3 = K1 @ K2;

if(&K3 == &K1)
    //K1 @ K2 zwraca referencję do K1.
else
    if(&K3 == &K2)
        //K1 @ K2 zwraca referencję do K2.
    else
        //K1 @ K2 zwraca wartość.
0

Operator zawsze zwraca referencje, tylko powinieneś się zastanowić do jakiego biektu. To wynika z ciałka funkcji.

0
adf88 napisał(a)

Operator zawsze zwraca referencje, tylko powinieneś się zastanowić do jakiego biektu. To wynika z ciałka funkcji.

Zawsze??? a operator+, operator-, operator* i operator/???

0

Chodziło mi o operator @ z przykładu.

0
adf88 napisał(a)

Chodziło mi o operator @ z przykładu.

Intelli napisał(a)

gdzie @ jest dowolnym operatorem dwuargumentowym oraz, że nie znam implementacji klasy KLASA.

:>

0

KLASA& operator@ (KLASA& K1,KLASA& K2)

1 użytkowników online, w tym zalogowanych: 0, gości: 1