This repository has been archived on 2023-05-13. You can view files and clone it, but cannot push or open issues or pull requests.
mipt_cpp/seminar02_encapsulation/classroom_tasks/code/0book/05this_pointer.cpp

54 lines
1.6 KiB
C++
Raw Normal View History

2022-09-14 19:05:27 +03:00
/*
Ключевое слово this
Используя указатель this внутри структуры, можно узнать адрес объекта.
Например, если метод был вызван таким образом:
a.printThis();
то внутри метода this будет означать адрес объекта a
С помощью этого указателя можно доступаться до полей класса.
Например, title и this->title это одно и то же внутри методов структуры.
this можно использовать, если имя аргумента метода совпадает с одним из полей, как, например, в методе setPrice
Внутри метода setPrice поле price перекрывается аргументом price. Но можно всё-равно доступиться до поля price, используя указатель this
*/
#include <iostream>
using std::cout, std::endl;
struct Book
{
char title[100];
float price;
int pages;
void printThis() const
{
cout << this << endl;
}
void printTitle() const
{
cout << title << endl;
cout << this->title << endl;
}
void setPrice(float price)
{
this->price = price;
}
};
int main()
{
Book a = {"War and Peace", 1700, 900};
cout << &a << endl;
a.printThis();
a.printTitle();
}