Следующий пост -

Класс INT который ведет себя как int

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

Определите класс INT, который ведет себя в точности как int. Подсказка: определите INT::operator int().

Ну это не сложная задачка, просто нужно перегрузить operator int(), тоесть оператор приведения типа.

Интересная задачка никогда не подумаешь, что все так просто, легкое моделирование основных классов. Вот, что у меня получилось:

//class INT ведет себя как int
#include <iostream>
using std::cout;
using std::endl;

class INT
{
public:
	int val;
	//конструктор по умолчанию
	INT():val(0){};
	//конструктор преобразования
	INT(int a):val(a){};	
	operator int()
	{
		return val;
	}
};

int main()
{
	INT a;
	cout <<a.val<<endl;
	INT b(3);
	cout <<b.val<<endl;
	a=a+4;
	cout <<a<<endl;
	INT c=a+b;//7
	cout <<c<<endl;

	return 0;
}

Как мы видим в первом выражении a=a+4; а видимо неявно преобразовывается в int и тупо выполняются операции для int, также во всех последующих выражения.

От можно увидеть cout мы не перегрузили для нашего класса INT, то значит вызывается operator int() и просто приводит тип INT к типу int и тогда уже вызывается для него cout. Так же и код ниже c=a+b; все тоже самое выполнили операции в с находится 7, тогда уже и токо тогда вызывается конструктор преобразования. От такая от фигня малята.

[youtube]http://www.youtube.com/watch?v=kfNaWBJxLyc[/youtube]

rss