程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++編程調試秘笈----帶有初始化的基本類型

C++編程調試秘笈----帶有初始化的基本類型

編輯:C++入門知識

建議不要使用內置類型,而是使用類 比如: 不要使用int,而是使用Int 不要使用unsigned,該用Unsigned ..... 這樣就不會出現所謂的垃圾值 scpp_types.h: [cpp]   #ifndef __SCCP_TYPES_H__   #define __SCCP_TYPES_H__      #include <ostream>   #include "scpp_assert.h"      template <typename T>   class TNumber   {   public:       TNumber(const T& x =0 )           :data_(x)       {          }       operator T() const        {           return data_;       }          TNumber &operator = (const T& x)       {           data_ = x;           return *this;       }          TNumber operator ++(int)       {           TNumber<T> copy(*this);           ++data_;           return copy;       }          TNumber operator ++()       {           ++data_;           return *this;       }          TNumber& operator += (T x)       {           data_ += x;           return *this;       }          TNumber& operator -= (T x)       {           data_ -= x;           return *this;       }          TNumber& operator *= (T x)       {           data_ *= x;           return *this;       }          TNumber& operator /= (T x)       {           SCPP_ASSERT(x != 0, "Attempt to divide by 0");           data_ /= x;           return *this;       }          T operator / (T x)       {           SCPP_ASSERT(x != 0, "Attempt to divide by 0");           return data_ / x;       }      private:       T data_;   };      typedef long long int64;   typedef unsigned long long unsigned64;      typedef TNumber<int>      Int;   typedef TNumber<unsigned> Unsigned;   typedef TNumber<int64>        Int64;   typedef TNumber<unsigned64> Unsigned64;   typedef TNumber<float>        Float;   typedef TNumber<double>       Double;   typedef TNumber<char>     Char;      class Bool   {   public:       Bool(bool x = false)           :data_(x)       {       }          operator bool () const       {           return data_;       }          Bool& operator = (bool x)       {           data_ = x;           return *this;       }          Bool& operator &= (bool x)       {           data_ &= x;           return *this;       }          Bool& operator |= (bool x)       {           data_ |= x;           return *this;       }      private:       bool data_;   };      inline std::ostream& operator << (std::ostream& os, Bool b)   {       if (b)       {           os << "True";       }       else       {           os << "False";       }       return os;   }       測試代碼(vs2012+win7環境): [cpp]   #include "stdafx.h"   #include "scpp_assert.h"   #include "iostream"   #include "scpp_vector.h"   #include "scpp_array.h"   #include "scpp_matrix.h"   #include "algorithm"   #include "scpp_types.h"      int _tmain(int argc, _TCHAR* argv[])   {       Int dataInt;       Double dataDouble1(1.2);       Double dataDouble2;       Char c;          std::cout << dataInt << std::endl;       std::cout << dataDouble1 << std::endl;       std::cout << dataDouble2 << std::endl;       std::cout << dataInt++ << std::endl;       std::cout << ++dataInt << std::endl;       std::cout << c << std::endl;          c = 'x';       std::cout << c << std::endl;          //  dataDouble1 /= dataDouble2;       dataDouble1  = dataDouble1 / dataDouble2;          return 0;   }      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved