Ссылки в С++

Ссылки были введены в С++ чтобы избавиться от проблем связанных с использованием указателей. Ссылки позволяют передать в функцию аргумент(ы) по ссылке (без копирования), также как и указатели, но работа в функции с ними ведется как с объектами а не указателями. Фактически ссылка является псевдонимом того объекта, на который она ссылается.

Отличия ссылок от указателей

  • Ссылка всегда ссылается на существующий объект, указатель же может быть нулевым.
  • Ссылка не может ссылаться на другой объект после инициализации.

#include<iostream> // std::cout
void val(int a){   // Передача аргумента по значению
    a++;           // Инкрементирование аргумента
}
void ref(int &a){  // Передача аргумента по ссылке с использованием ссылки
    a++;           // Инкрементирование аргумента
}
void ptr(int * a){ // Передача аргумента по ссылке с использованием указателя
    (*a)++;        // Инкрементирование аргумента
}
int main() {
    int b = 10;             // Аргумент для передачи в функции
    val(b);                 // Передача аргумента по значению . Аргумент не изменяется
    std::cout << b << '\n'; // 10
    ref(b);                 // Передача аргумента по ссылке. Аргумент изменяется.
    std::cout << b << '\n'; // 11
    ptr(&b);                // Передача аргумента через указатель. Аргумент изменяется.
    std::cout << b << '\n'; // 12
    return 0;
}
2023-10-23



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

Ассемблерный листинг С++
Бенчмарки в С++
Рисование в консоли windows на С++
Функции в С++
Параметры функции в С++
Глоссарий С++. Идентификаторы, квалификаторы, модификаторы, объявление, определение и т.д..
Исключения в С++. Выбрасывание и ловля исключения.
Достоинства и недостатки C++
Сборка приложения без IDE C++ с помощью MinGW и Qt
Перегрузка функций и операторов в С++
Случайные числа в С++. Полиномиальная генерация случайных чисел.
Ссылки в С++
Рекурсия в С++. Примеры рекурсивных программ и без использования.
Шаблоны C++
Наименование переменных и стиль программирования
Версия компилятора С++
Время выполнения программы C++