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

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

proahead

#1
Разбираясь в работе программы из книги Джесса Либерти «С++ за 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()], как если бы, объект был в области динамического объекта

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

lazybiz

Well-known member
03.11.2010
1 339
0
#2
В отличие от оператора '.', оператор '->' используется для доступа к компоненту класса/структуры через указатель на класс/структуру.