Передача объекта no ссылке...173

We use cookies. Read the Privacy and Cookie Policy

Оператор ссылки описан в главе 9, "Второе знакомство с указателями", и может применяться для пользовательских объектов так же, как и для всех остальных.

    /* PassObjRef — изменение значения объекта в функции при передаче с использованием ссылки */

    #include <cstdio>

    #include <cstdlib>

    #include <iostream>

    using namespace std ;

    class Student

    {

        public :

            int semesterHours ;

            float gpa ;

    } ;

    void someFn( Student& refS )

    {

            refS.semesterHours = 10 ;

             refS.gpa = 3.0 ;

            cout << "Значение refS.gpa = "

                        << refS.gpa << " " ;

    }

    int main( int argc , char* pArgs[ ] )

    {

        setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

            Student s ;

            s.gpa = 0.0 ;

_________________

173 стр. Глава 14. Указатели на объекты

            /* Вывод значения s.gpa до вызова someFn( ) */

            cout << "Значение s.gpa =  " << s.gpa << " " ;

            /* Передача существующего объекта */

            cout << "Вызов someFn( Student& ) " ;

             someFn( s ) ;

            cout << "Возврат из someFn ( Student& ) " ;

            /* Значение s.gpa теперь равно 3.0 */

            cout << "Значение s.gpa = " << s.gpa << " " ;

            /* Пауза для того, чтобы посмотреть на результат работы программы */

            system( "PAUSE" ) ; return 0 ;

    }

 

    Значение s.gpa = 0

    Вызов someFn( Student& )

    Значение refS.gpa = 3

    Возврат из someFn( Student& )

    Значение s.gpa = 3

    Press any key to continue...

В этой программе в функцию someFn( ) передаётся не копия объекта, а ссылка на него. Изменения, внесённые функцией someFn( ) в s, сохраняются внутри main( ).

 

«Передача объекта по ссылке — всего лишь другой способ передачи в функцию адреса объекта s. С++ самостоятельно отслеживает адрес ссылки, в то время как при передаче указателя вы должны заниматься этим сами.» 

[Советы]