Ключевое слово this в С++

Рубрика: C++, Дата: 14 March, 2013, Автор:
Tags:

Что это за фигня такое this? Как его на практике можно применить?

Да я слышал, что this это константный указатель на текущий экземпляр класса, ну а, что как его использовать я можно сказать хз.

Щас попробуем с примерчиками кода разобраться с ним.

Для начала определим какой нить левый класс и попробуем обращаться к членам класса через this, а также попробуем его вернуть распечатать и так далее.

От кое какой кодец я навоял:

#include <iostream>
using std::cout;
using std::endl;
#include <cstring>
using std::strcpy;

class String
{
	char* s;
public:
	//konctryktor po ymolchaniyu
	String()
	{
		s=new char[0];
		strcpy(s,"");
	}
	
	//konctryktor preobrazovani9
	String(const char* a)
	{
		s=new char[strlen(a)];
		strcpy(s,a);
	}
	
	//vuvod
	void print()
	{
		cout <<this->s<<endl;//obrachenie cherez konctantnui ykazatel6
	}
	
	String& operator=(const String& a)//
	{
		s=new char[strlen(a.s)];
		strcpy(s,a.s);
		
		return *this;//vozvrachaet cculky na ob6ekt
		//return this;//vozvrachaet kopiyu ob6ekta
	}
	
	String* bcd(const String& a)//
	{
		s=new char[strlen(a.s)];
		strcpy(s,a.s);
		
		return this;//vozvrachaet cculky na ob6ekt
		//return this;//vozvrachaet kopiyu ob6ekta
	}
	
	
};

int main()
{
	String s("hel");
	s.print();
	String b;
	b.print();
	b=s;//doljna vozvrachatc9 cculka i toko cculka potomy chto ne novui ob6ekt
	b.print();
	
	String* c;
	c=b.bcd(s);
	c->print();
	//c->print();
	
	
	return 0;
}

Скажем сначала, что такое this. this – это константный указатель на текущий объект, то есть this может указывать, только на текущий объект и ни на какой нибудь другой. Отлично.

Как извлечь текущий объект нужно просто разыменовать указатель *this

return *this; как оказалось возвращает ссылку на объект.

Не копию объекта а ссылку.

Просто return this; возвращает указатель на текущий объект.

Вообщем все отлично.

А как же нам копию объекта вернуть хз?

 

rss