## 构造函数的定义与使用

本文详细介绍了构造函数在C++中的作用,包括初始化对象属性、开辟内存空间和数据成员初始化。同时,解释了默认构造函数的生成及特性,并通过一个`intarray`类的例子展示了如何使用构造函数进行对象创建和操作。此外,文中还提到了构造函数的重载,允许创建具有不同参数列表的同名构造函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

## 构造函数的定义与使用

  1. 构造函数的作用
    构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建
    对象时, 对象会自动调用它的构造函数。一般来说, 构造函数有以下三个方面
    的作用:
    ■ 给创建的对象建立一个标识符;
    ■ 为对象数据成员开辟内存空间;
    ■ 完成对象数据成员的初始化。

  2. 默认构造函数
    当用户没有显式的去定义构造函数时, 编译器会为类生成一个默认的构造函数,
    称为 “默认构造函数”, 默认构造函数不能完成对象数据成员的初始化, 只能给
    对象创建一标识符, 并为对象中的数据成员开辟一定的内存空间。

  3. 构造函数的特点
    无论是用户自定义的构造函数还是默认构造函数都主要有以下特点:
    ①. 在对象被创建时自动执行;
    ②. 构造函数的函数名与类名相同;
    ③. 没有返回值类型、也没有返回值;
    ④. 构造函数不能被显式调用。
    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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值