Передача параметров в функцию по ссылке, непонятны особенности работы

Тема в разделе "C/C++/C#", создана пользователем proahead, 11 сен 2011.

  1. proahead

    proahead Гость

    Разбираясь в работе программы из книги Джесса Либерти «С++ за 21 день» у меня возник вопрос, с которым я хочу обратится к вам потому что, не могу понять один момент…

    Код (C++):
    #include <cstdlib>
    #include <iostream>
    using namespace std;

    class SimpleCat
    {
    public:
    SimpleCat();
    SimpleCat(SimpleCat &);
    ~SimpleCat();

    int GetAge() const { return itsAge; }
    void SetAge(int age) { itsAge=age; }
    private:
    int itsAge;
    };

    SimpleCat :: SimpleCat()
    {
    cout<<"Simple Cat constructor \n";
    itsAge=1;
    }

    SimpleCat :: SimpleCat( SimpleCat & )
    {
    cout<<"SimpleCat Copy Constructor \n";
    }

    SimpleCat :: ~SimpleCat()
    {
    cout<<"SimpleCat destructor \n";
    }

    const SimpleCat * const FunctionTwo(const SimpleCat * const theCat);


    int main()
    {

    cout<<"Making a cat \n";
    SimpleCat Frisky;
    cout<<"Frisky is ";
    cout<<Frisky.GetAge();
    cout<<" years old\n";

    int age=5;

    Frisky.SetAge(age);
    cout<<"Frisky is ";
    cout<<Frisky.GetAge();
    cout<<" years old\n";

    cout<<"Calling Function Two\n";
    FunctionTwo(&Frisky);
    cout<<"Frisky is ";
    cout<<Frisky.GetAge();
    cout<<" years old\n";



    system("PAUSE");
    return EXIT_SUCCESS;
    }


    const SimpleCat * const FunctionTwo(const SimpleCat * const theCat)
    {
    cout<<"FunctionTwo Returning \n";
    cout<<"Frisky is now "<<theCat->GetAge()<<" ";
    cout<<" years old\n";
    // theCat->SetAge(8);
    return theCat;
    }

    Вопрос касается следующего момента.
    Мы передаем адрес объекта Frisky [размещенного в стеке, а значит к его членам мы можем обращаться с помощью оператора доступа «.», т.е. Frisky.GetAge()] в функцию FunctionTwo, где для обращение к его членам мы уже используем оператор косвенного обращения «->» [Frisky->GetAge()], как если бы, объект был в области динамического объекта

    Кто знает объясните пожалуйста
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    В отличие от оператора '.', оператор '->' используется для доступа к компоненту класса/структуры через указатель на класс/структуру.
     
Загрузка...
Похожие Темы - Передача параметров функцию
  1. DNT
    Ответов:
    7
    Просмотров:
    3.752
  2. Corexis
    Ответов:
    0
    Просмотров:
    90
  3. Shouldercannon
    Ответов:
    0
    Просмотров:
    499
  4. Shouldercannon
    Ответов:
    0
    Просмотров:
    398
  5. 123456789igor
    Ответов:
    0
    Просмотров:
    817

Поделиться этой страницей