## 构造函数的定义与使用
-
构造函数的作用
构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建
对象时, 对象会自动调用它的构造函数。一般来说, 构造函数有以下三个方面
的作用:
■ 给创建的对象建立一个标识符;
■ 为对象数据成员开辟内存空间;
■ 完成对象数据成员的初始化。 -
默认构造函数
当用户没有显式的去定义构造函数时, 编译器会为类生成一个默认的构造函数,
称为 “默认构造函数”, 默认构造函数不能完成对象数据成员的初始化, 只能给
对象创建一标识符, 并为对象中的数据成员开辟一定的内存空间。 -
构造函数的特点
无论是用户自定义的构造函数还是默认构造函数都主要有以下特点:
①. 在对象被创建时自动执行;
②. 构造函数的函数名与类名相同;
③. 没有返回值类型、也没有返回值;
④. 构造函数不能被显式调用。
4.构造函数的名称和类相同,但是通过函数重载,可以创建多个同名的构造函数,条件是每个函数的特征标(参数列表)都不同。
对上一次代码添加构造函数
#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;
}
使用构造函数:
显示的使用:intarray a=intarray(2)
隐式的调用:intarray a=(2)
intarray*a=new intarray(2)