Visual Studio2010新特性--C++王者归来(2)--安全数据类型safeint

 

VC++2010在c++语言里面增加了一个特殊的新特性,safeint是一种安全数据类型,

能够保证运算是安全的,使用安全数据类型能够够规避软件异常,以及软件测试检测的

常规性很多错误,具体安全数据类型的请见代码演示,

代码由vc++2010调试通过!备有详细的注释!

 

 

#include "stdafx.h" #include <safeint.h> #include <iostream> using namespace std; using namespace Microsoft::Utilities; class CMySafeIntException : public SafeIntException { public: static void CMySafeIntException::SafeIntOnOverflow() { cout << "捕获SafeInt溢出异常!" << endl; } static void CMySafeIntException::SafeIntOnDivZero() { cout << "捕获SafeInt被零除!" << endl; } }; int _tmain(int argc, _TCHAR* argv[]) { while (1) { unsigned int a, b; cout << "输入前8位无符号整数: "; cin >> a; cin.ignore(); cout << "输入第二个8位无符号整数: "; cin >> b; cin.ignore(); // 添加两个变量 cout << "添加两个数字的8位整数:" << endl; // 新增两个整数使用正常调用 unsigned __int8 i1 = a; unsigned __int8 i2 = b; cout << " 标准运算,结果="; unsigned __int8 iResult = i1 + i2; cout << (int)iResult << endl; // 新增两个整数使用SafeInt对象 SafeInt<unsigned __int8, CMySafeIntException> si1(i1); SafeInt<unsigned __int8, CMySafeIntException> si2(i2); cout << " Using SafeInt objects, result="; SafeInt<unsigned __int8, CMySafeIntException> siResult = si1 + si2; cout << (int)siResult << endl; // 整数相除 cout << endl << "整数相除:" << endl; // 两个整数正常除法 cout << " 标准运算,结果="; if (i2 != 0) // Prevent a crash! { iResult = i1 / i2; cout << (int)iResult << endl; } else cout << "中止因为除以零." << endl; //两个整数除以使用SafeInt对象 cout << " 使用SafeInt对象, 结果="; siResult = si1 / si2; cout << (int)siResult << endl; cout << endl << endl; } return 0; }

欢迎vc++2010技术交流,需要源码请在CSDN博客留言留下Email

 

本文作者专著《Visual C++2010开发权威指南》即将推出,敬请关注,Visual C++2010最近技术,Windows7开发最新技术!

你可能感兴趣的:(windows,Microsoft,软件测试,email,Crash,2010)