Класс Int который ведет себя как встроенный тип int.

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

Определите класс Int, который ведет себя как встроенный тип int, только он еще генерирует исключения в случае переполнения (или потери точности)

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

Примем за максимальный размер класса Int  тысячу, то есть больше в ней нельзя разместить. От мы и будем проверять его на переполнение. Если Int будет больше 1000, то мы будем генерировать исключение. Ну от я такой простой примерчик написал. Файл main.cpp:

//class INT ведет себя как int
#include <iostream>
using std::cout;
using std::endl;
 
//klass xranit 1000 chiclo ne bolee
class Int
{
public:
	class Except
	{
	double val;
	public:
		Except(double a):val(a){}
		double getVal(){return val;}
	};
	int val;
	//конструктор по умолчанию
	Int():val(0){};
	//конструктор преобразования
	Int(int a)
	{
		if(a>1000)
			throw Except(a);
		
		val=a;
	}
	operator int()
	{
	return val;
	}
};
 
int main()
{
	try
	{
		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;
		
		//vuzuvaem perepolnenie
		int k=1001;
		a=k;//doljno vuzvatc9 icklyuchenie
	}
	catch(Int::Except& a)
	{
		cout <<"perepolnenie chislo vuzvavwee "<<a.getVal()<<endl;
	}

    return 0;
}

Ну и как всегда обработка исключений обычная try{}catch(){} .

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

rss