亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++實踐數(shù)組類運算的實現(xiàn)參考

 更新時間:2019年02月19日 14:36:45   作者:迂者-賀利堅  
今天小編就為大家分享一篇關(guān)于C++實踐數(shù)組類運算的實現(xiàn)參考,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

【項目-數(shù)組類運算的實現(xiàn)】

設(shè)計數(shù)組類Array,為了實現(xiàn)測試函數(shù)中要求的功能,請補足相關(guān)的函數(shù)(構(gòu)造、析構(gòu)函數(shù))和運算符重載的函數(shù)。

實現(xiàn)策略提示:可以將測試函數(shù)中的語句加上注釋,取消一句的注釋,增加相應(yīng)的函數(shù),以漸增地實現(xiàn)所有的功能,避免全盤考慮帶來的困難。

class Array
{
private:
  int* list;   //用于存放動態(tài)分配的數(shù)組內(nèi)存首地址
  int size;    //數(shù)組大?。ㄔ貍€數(shù))
public:
  //成員函數(shù)聲明
};
//要求測試函數(shù)能夠運行出正確、合理的結(jié)果:
int main()
{
  int a[8]= {1,2,3,4,5,6,7,8};
  int b[8]= {10,20,30,40,50,60,70,80};
  Array array1(a,8),array3,array4;
  const Array array2(b,8);
  array4=array3=array1+array2;
  array3.show();
  array4.resize(20);
  array4[8]=99;
  cout<<array4[8]<<endl;
  cout<<array2[3]<<endl;
  return 0;
}

[參考解答]

#include <iostream>
#include <iomanip>
#include <cassert>
using namespace std;
class Array
{
private:
  int* list;   //用于存放動態(tài)分配的數(shù)組內(nèi)存首地址
  int size;    //數(shù)組大小(元素個數(shù))
public:
  Array(int sz = 50);   //構(gòu)造函數(shù)
  Array(int a[], int sz);   //構(gòu)造函數(shù)
  Array(const Array &a); //拷貝構(gòu)造函數(shù)
  ~Array();     //析構(gòu)函數(shù)
  Array operator + (const Array &a2);   //重載"="
  Array &operator = (const Array &a2);  //重載"="
  int &operator[] (int i); //重載"[]"
  const int &operator[] (int i) const;
  int getSize() const;    //取數(shù)組的大小
  void resize(int sz);    //修改數(shù)組的大小
  void show() const;
};
Array::Array(int sz) //構(gòu)造函數(shù)
{
  assert(sz >= 0);//sz為數(shù)組大?。ㄔ貍€數(shù)),應(yīng)當(dāng)非負(fù)
  size = sz; // 將元素個數(shù)賦值給變量size
  list = new int [size]; //動態(tài)分配size個int類型的元素空間
}
Array::Array(int a[], int sz)
{
  assert(sz >= 0);//sz為數(shù)組大?。ㄔ貍€數(shù)),應(yīng)當(dāng)非負(fù)
  size = sz; // 將元素個數(shù)賦值給變量size
  list = new int [size]; //動態(tài)分配size個int類型的元素空間
  for (int i = 0; i < size; i++) //從對象X復(fù)制數(shù)組元素到本對象
    list[i] = a[i];
}
Array::~Array()  //析構(gòu)函數(shù)
{
  delete [] list;
}
//拷貝構(gòu)造函數(shù)
Array::Array(const Array &a)
{
  size = a.size; //從對象x取得數(shù)組大小,并賦值給當(dāng)前對象的成員
  //為對象申請內(nèi)存并進行出錯檢查
  list = new int[size];  // 動態(tài)分配n個int類型的元素空間
  for (int i = 0; i < size; i++) //從對象X復(fù)制數(shù)組元素到本對象
    list[i] = a.list[i];
}
Array Array::operator + (const Array &a2)
{
  assert(size == a2.size);  //檢查下標(biāo)是否越界
  //如果本對象中數(shù)組大小與a2不同,則刪除數(shù)組原有內(nèi)存,然后重新分配
  Array total(size);
  for (int i = 0; i < size; i++)
    total.list[i] = list[i]+a2.list[i];
  return total;  
}
//重載"="運算符,將對象a2賦值給本對象。實現(xiàn)對象之間的整體賦值
Array &Array::operator = (const Array& a2)
{
  if (&a2 != this)
  {
    //如果本對象中數(shù)組大小與a2不同,則刪除數(shù)組原有內(nèi)存,然后重新分配
    if (size != a2.size)
    {
      delete [] list; //刪除數(shù)組原有內(nèi)存
      size = a2.size; //設(shè)置本對象的數(shù)組大小
      list = new int[size];  //重新分配n個元素的內(nèi)存
    }
    //從對象X復(fù)制數(shù)組元素到本對象
    for (int i = 0; i < size; i++)
      list[i] = a2.list[i];
  }
  return *this;  //返回當(dāng)前對象的引用
}
//重載下標(biāo)運算符,實現(xiàn)與普通數(shù)組一樣通過下標(biāo)訪問元素,并且具有越界檢查功能
int &Array::operator[] (int n)
{
  assert(n >= 0 && n < size); //檢查下標(biāo)是否越界
  return list[n];     //返回下標(biāo)為n的數(shù)組元素
}
//常對象時,會調(diào)用這個函數(shù),運算結(jié)果(引用)將不能再被賦值
const int &Array::operator[] (int n) const
{
  assert(n >= 0 && n < size); //檢查下標(biāo)是否越界
  return list[n];     //返回下標(biāo)為n的數(shù)組元素
}
//取當(dāng)前數(shù)組的大小
int Array::getSize() const
{
  return size;
}
//將數(shù)組大小修改為sz
void Array::resize(int sz)
{
  assert(sz >= 0);  //檢查sz是否非負(fù)
  if (sz == size) //如果指定的大小與原有大小一樣,什么也不做
    return;
  int* newList = new int [sz];  //申請新的數(shù)組內(nèi)存
  int n = (sz < size) ? sz : size;//將sz與size中較小的一個賦值給n
  //將原有數(shù)組中前n個元素復(fù)制到新數(shù)組中
  for (int i = 0; i < n; i++)
    newList[i] = list[i];
  delete[] list;   //刪除原數(shù)組
  list = newList; // 使list指向新數(shù)組
  size = sz; //更新size
}
void Array::show() const
{
  for (int i = 0; i < size; i++)
    cout<< list[i]<<" ";
  cout<<endl;
}
int main()
{
  int a[8]= {1,2,3,4,5,6,7,8};
  int b[8]= {10,20,30,40,50,60,70,80};
  Array array1(a,8),array3,array4;
  const Array array2(b,8);
  array4=array3=array1+array2;
  array3.show();
  array4.resize(20);
  array4[8]=99;
  cout<<array4[8]<<endl;
  cout<<array2[3]<<endl;
  return 0;
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • OpenCV輪廓檢測之boundingRect繪制矩形邊框

    OpenCV輪廓檢測之boundingRect繪制矩形邊框

    在進行文本檢測時,我們常常會用矩形邊框?qū)z測到的內(nèi)容框除。這篇文章主要為大家介紹的是OpenCV中能實現(xiàn)這一效果的函數(shù):boundingRect,感興趣的同學(xué)可以學(xué)習(xí)一下
    2021-12-12
  • C語言中左移和右移運算符詳細(xì)介紹

    C語言中左移和右移運算符詳細(xì)介紹

    這篇文章主要介紹了C語言中左移和右移運算符詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 帶你了解C++的IO流

    帶你了解C++的IO流

    這篇文章主要介紹了C++ IO流的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-09-09
  • c++幾種基本的插入排序(圖文)

    c++幾種基本的插入排序(圖文)

    這篇文章主要介紹了c++幾種基本的插入排序(圖文),需要的朋友可以參考下
    2014-11-11
  • C語言學(xué)習(xí)筆記之VS2022安裝使用教程

    C語言學(xué)習(xí)筆記之VS2022安裝使用教程

    這篇文章主要介紹了C語言學(xué)習(xí)筆記之VS2022安裝使用教程,在VS2022中,在使用scanf函數(shù)編譯出錯,本文給大家提到了解決方法,需要的朋友可以參考下
    2022-05-05
  • Linux c中define的用法小結(jié)

    Linux c中define的用法小結(jié)

    學(xué)習(xí)了這么多年C語言,說實話對宏自以為了如指掌了,沒想到看內(nèi)核代碼的時候還是那么吃力,設(shè)備驅(qū)動代碼中有很多這樣或者那樣的宏定義,各種define,在學(xué)習(xí)的過程中將C語言中所出現(xiàn)的#define定義整理總結(jié)了一下,供大家借鑒和學(xué)習(xí)。
    2016-01-01
  • C語言實現(xiàn)最小生成樹構(gòu)造算法

    C語言實現(xiàn)最小生成樹構(gòu)造算法

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)最小生成樹構(gòu)造算法,利用Prim算法或kruskal算法求解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 嵌入式QT移植的實現(xiàn)

    嵌入式QT移植的實現(xiàn)

    本文主要介紹了嵌入式QT移植的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C語言實現(xiàn)矩陣翻轉(zhuǎn)(上下翻轉(zhuǎn)、左右翻轉(zhuǎn))

    C語言實現(xiàn)矩陣翻轉(zhuǎn)(上下翻轉(zhuǎn)、左右翻轉(zhuǎn))

    這篇文章主要介紹了C語言實現(xiàn)矩陣翻轉(zhuǎn)(上下翻轉(zhuǎn)、左右翻轉(zhuǎn))的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 淺析C++函數(shù)模板和類模板

    淺析C++函數(shù)模板和類模板

    C++語言的模板技術(shù)包括函數(shù)模板和類模板,模板技術(shù)是一種代碼重用技術(shù),函數(shù)和類是C++語言中兩種主要的重用代碼形式,這篇文章主要介紹了C++函數(shù)模板和類模板,需要的朋友可以參考下
    2022-07-07

最新評論