C++ : conversii forţate

Lucrăm cu Microsoft Visual Studio Enterprise 2015 în Windows 10 Professional (thanks, MSDNAA).

Descărcaţi codulPentru vizualizare, folosiţi scrollbar-ul din josul blocului de cod.
#include <iostream>
#include <conio.h>

/**
* Daca un numar intreg nu se gaseste intre -10 si 10 (inclusiv),
* valoarea inmagazinata va fi 12.
*
*/
class TestInt {
	friend std::ostream& operator<< (std::ostream&, const TestInt&);
private:
	int intregul;
public:
	TestInt(int nn)
	{
		(nn <= 10 && nn >= -10) ? intregul = nn : intregul = 12;
	}
	int citire() const {
		return intregul;
	}
};

std::ostream& operator<< (std::ostream& o, const TestInt& t) {
	o << t.citire();
	return o;
}

int main() 
{
	TestInt n = 8;
	std::cout << n.citire() << std::endl;
	TestInt m = 22;
	std::cout << m.citire() << std::endl;

	/**
	* Conversie fortata (cast) ce imi permite evitarea
	* valorilor mari.
	*/
	std::cout << static_cast<TestInt>(876) << std::endl;
	_getch();
	return 0;
}