## 建構函式

Elefance13發表於2020-11-15

建構函式

  1. 建構函式的作用
    建構函式主要用來在建立物件時完成對物件屬性的一些初始化等操作, 當建立
    物件時, 物件會自動呼叫它的建構函式。一般來說, 建構函式有以下三個方面
    的作用:
    ■ 給建立的物件建立一個識別符號;
    ■ 為物件資料成員開闢記憶體空間;
    ■ 完成物件資料成員的初始化。

  2. 預設建構函式
    當使用者沒有顯式的去定義建構函式時, 編譯器會為類生成一個預設的建構函式,
    稱為 “預設建構函式”, 預設建構函式不能完成物件資料成員的初始化, 只能給
    物件建立一識別符號, 併為物件中的資料成員開闢一定的記憶體空間。

  3. 建構函式的特點
    無論是使用者自定義的建構函式還是預設建構函式都主要有以下特點:
    ①. 在物件被建立時自動執行;
    ②. 建構函式的函式名與類名相同;
    ③. 沒有返回值型別、也沒有返回值;
    ④. 建構函式不能被顯式呼叫。

對上一次程式碼新增建構函式

 #include <iostream>
 
using namespace std;
class intarray
{
    int* data;
    int size;
    int getval(int condition);
public:
    intarray(int n)
    {
        size = n;
        data = new int[n];
    }
    void setarray(int len, int* in);
    int getSize();
    int setVal(int pos, int val);
    int getMaxVal();
    int getMinVal();
};
 
int intarray::getMaxVal()
{
    int temp = getval(0);
    return temp;
}
int intarray::getMinVal()
{
    int temp = getval(1);
    return temp;
}
void intarray::setarray(int len, int* in)
{
    size = len;
    data = new int[len];
    for (int i = 0; i < len; i++)
        data[i] = in[i];
}
int intarray::getSize()
{
    return size;
}
int intarray::setVal(int pos, int val)
{
    if ((pos < 0) || (pos > size))
        return -1;
    data[pos] = val;
    return 0;
}
int intarray::getval(int condition)
{
    int temp = data[0];
    for (int i = 0; i < size; i++)
    {
        if (condition == 0)
        {
            if (data[i] > temp)
                temp = data[i];
        }
        else
        {
            if (data[i] < temp)
                temp = data[i];
        }
    }
    return temp;
}
 
int main()
{
    int n;
    cout << "要比較幾個數:" << endl;
    cin >> n;
    intarray array(n);
    int i, size, v, max, min;
    size = array.getSize();
    cout << "please input" << size << "numbles:" << endl;
    for (i = 0; i < size; i++)
    {
        cin >> v;
        array.setVal(i, v);
    }
    max = array.getMaxVal();
    min = array.getMinVal();
    cout << "max value is:" << max << endl;
    cout << "min value is:" << min << endl;
 
    return 0;
}

相關文章