• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы proahead
  • Дата начала
P

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()], как если бы, объект был в области динамического объекта

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

lazybiz

В отличие от оператора '.', оператор '->' используется для доступа к компоненту класса/структуры через указатель на класс/структуру.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!