Definicja Referencja (Szukaj)

Spis treści



Referencja w C++Język C++ jest obiektowo zorientowanym językiem programowania. Stworzony w latach osiemdziesiątych XX wieku przez Bjarne Stroustrupa. Na język C++ wpływ miały, poza językiem C, jako jego podstawą, przede wszystkim Simula, z której zaczerpnął właściwości obiektowe, a także języki takie, jak Algol, Ada, ML i Clu....
[click for more]

W języku programowania C++ referencja jest pochodnym typem danych, podobnie jak wskaźnik, umożliwia pośrednie odwoływanie się do zmiennych.

Referencja jest jakby inną nazwą dla tej samej zmiennej, nie istnieje w oderwaniu od zmiennej właściwej. Łączy ona elastyczność jaką dają wskaźniki oraz wygodę operowania jak na zwykłej zmiennej.

Przykład

#include <iostream>
using namespace std;
 
int main()
{
  int zmienna = 123;
  int &referencja = zmienna;

  cout << "Zawartosc zmiennej : "   << zmienna    << endl;
  cout << "Zawartosc referencji : " << referencja << endl; 
  zmienna = 567;
  cout << "Teraz zawartosc referencji to : " << referencja << endl; 
  referencja = 901; // na referencji operujemy tak samo jak na zmiennej 
  cout << "Teraz zawartosc zmiennej to : " << zmienna << endl;
  return 0;
}

Lecz takie zastosowanie referencji jest bardzo rzadko spotykane. Bardzo często referencje stosuje się przy przesyłaniu argumentów do funkcji. Przykład w C++:

#include <iostream>
using namespace std;

class MojaKlasa {
  public:
    int tab[ 1000 ]; // duża tablica w klasie
    int x;
};

void wpiszX( MojaKlasa& obiekt , int noweX ) {
  obiekt.x = noweX;
}

int main()
{
  MojaKlasa mojObiekt;
  mojObiekt.x = 10; // wpisanie wartosci polu x
  wpiszX( mojObiekt , 5 );
  cout << mojObiekt.x; // wyswietlenie pola x
}
Mamy globalną funkcję void wpiszX( MojaKlasa& obiekt , int noweX ) (nie jest to dobrą praktyką programistyczną, ale dla potrzeb przykładu wystarczy) oraz klasę MojaKlasa która zawiera w sobie ogromną tablicę. (Funkcja ta powinna być metodą w klasie MojaKlasa, a taka budowa służy jedynie przykładowi)

W powyższym przykładzie widać 2 zastosowania referencji w argumentach funkcji:

  • Gdyby funkcja wpiszX nie przyjmowała parametru przez referencję, obiekt mojObiekt zostałby przesłany przez wartość, a więc zostałaby stworzona jego kopia na stosie. Natomiast obiekt ten ma pokaźne rozmiary, gdyż zawiera w sobie ogromną tablicę, stąd też kopiowanie zajmowałoby dużo czasu. Dodatkowo funkcja ta nie pracuje w ogóle na tej tablicy, a interesuje ją jedynie pole x. Natomiast przesłanie referencji na stos zajmuje tyle samo co przesłanie wskaźnika.
  • Przesyłanie do funkcji przez referencję powoduje, że funkcja otrzymuje adres nie kopii obiektu, ale oryginału, a więc każda zmiana obiektu w funkcji powoduje zmianę oryginału, co można zaobserwować na ekranie: zostanie wyświetlona wartość 5 jako nowa wartość pola x. Gdybyśmy nie zastosowali referencji przy argumencie funkcji, zostałaby wyświetlona wartość 10.

Zobacz też

Referencja w innych językach programowania

W innych językach programowania, takich jak PythonPython jest interpretowanym, interaktywnym językiem programowania stworzonym przez Guido van Rossuma. Jego nazwa pochodzi od grupy Monty Pythona. Porównuje się go często do takich języków, jak Tcl, Perl, Scheme, Rexx czy Java, a ostatnio także Ruby....
[click for more]
czy JavaJava jest obiektowym językiem programowania stworzonym przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems. Java jest językiem kompilowanym do postaci wykonywanej przez maszynę wirtualną i silnie typowanym. Jej podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, garbage collection) oraz z języka C++ (duża część składni i słów kluczowych)....
[click for more]
, referencja ma semantykęSemantyka to dyscyplina badająca relacje pomiędzy znakami a przedmiotami, do których się one odnoszą. Semantyka zajmuje się badaniem znaczenia słów, czyli interpretacją znaków oraz interpretacją zdań i wyrażeń języka. Semantyka logiczna (nazywana też czasem teorią modeli) bada języki sztuczne, gdzie badany język nazywany językiem przedmiotowym jest interpretowany za pomocą metajęzyka....
[click for more]
bliższą wskaźnikom z C++. Każde przypisanie do referencji powoduje, że wskazuje ona na nowo podaną wartość. Wartość pustą oznacza się specjalnym słowem kluczowym (null w Javie, nil w Smalltalku) lub specjalnym obiektem pustym (ang. null object; w Pythonie jest to None).

Od wskaźnika tak rozumiana refencja różni się tym, że nie może wskazywać na błędny, przypadkowy adres w pamięci. Zawsze jest albo pusta, albo wskazuje na konkretny obiekt. Eliminuje to całą kategorię błędów, wynikłych z próby interpretacji przypadkowego fragmentu pamięci jako konkretnych danych.

Referendarz (historia)
Referendarz (administracja)
Referendum 1946
Referendarz
Referendum konstytucyjne
Referendum ludowe
Referendarz sadowy
Referendum 1987
Referencja
Referendum
Referendum europejskie
Referendum 1997
Tresc udostepniana na licencji 'GNU Free Documentation License'.

Cache: OK - (Cache Hit) | Exec Czas: 0.100 | INTLinks: 17

Contakt: info AT definicja DOT com