<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                重載了運算符"=","[]",">>","<<"。 構造函數中sz被賦初值0,缺省長度為0。為了能像高級程序語言中的數組一樣獲取給定下標I的值,重載了運算符[],還增加檢查數組 是否越界的功能,c++中不做數組越界檢查。重載"="的函數中,防止了無意義的自我賦值,賦值前動態空間釋放并且重新分配,就達 到了整體賦值的目的。 斷言函數assert是c++提供的一種功能,若斷言語句的條件滿足則繼續執行后面的語句,否則出錯處理,終止程序運行。 實現代碼: ~~~ #include "iostream" #include "cstdio" #include "cstring" #include "algorithm" #include "assert.h" using namespace std; template <class T> class Array1D { public: Array1D(int sz = 0); // 缺省時長度為0 ~Array1D() { delete []elements; } T &operator [](int i) const; // 取元素值 Array1D<T> &operator = (const Array1D<T> &r); // 整體賦值 friend istream &operator>>(istream &in, Array1D<T> &r) { cout << "Input Array" << endl; for(int i = 0; i < r.size; ++i) in >> r.elements[i]; return in; } friend ostream &operator<<(ostream &out, const Array1D<T> &r) { out << "Array = " ; for(int i = 0; i < r.size; ++i) out << r.elements[i] << " "; out << endl; return out; } /* data */ private: int size; T *elements; // 指向T類型數組的指針 }; template <class T> Array1D<T>::Array1D(int sz) { assert(sz >= 0); // 越界檢查,滿足括號內條件才執行后面的語句 size = sz; elements = new T[sz]; } template <class T> T &Array1D<T>::operator [](int i) const { assert(i >= 0 && i < size); // 越界檢查,滿足括號內條件才執行后面的語句 return elements[i]; } template <class T> Array1D<T>& Array1D<T>::operator=(const Array1D<T> &r) // 數組r整體賦值給this { if(this != &r) { // 防止自我賦值 size = r.size; delete []elements; // 釋放原空間 elements = new T[size]; // 重新分配空間 for(int i = 0; i < size; ++i) // 復制元素 elements[i] = r.elements[i]; } return *this; } int main(int argc, char const *argv[]) { Array1D<int> a(5), b(8); Array1D<int> c; // 采用缺省長度0 cin >> a; cout << "a " << a; cin >> b; cout << "b " << b; cout << "c " << c; cout << "a[0] = " << a[0] << endl; cout << "b[5] = " << b[5] << endl; c = b; cout << "c = b, c " << c; b = a; cout << "b = a, b " << b; return 0; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看