数组类的构造函数
·
描述
现在有一个数组类,请实现它的构造函数。
输入描述:
第一行一个整数nn,表示数组的大小。
第二行nn个整数,表示数组。
输出描述:
输出这个数组。
#include <bits/stdc++.h>
using namespace std;
class Array{
private:
int n;//数组大小
int *a;//数组
public:
//无参构造函数,在构造函数内部读
Array()
{
//输入代码cin >> n;和cin >> a[i];直接写在了【构造函数】里,所以不需要外面传参数,构造函数自己从键盘里读数据
cin >> n; //读 数组大小
a = new int[n];// 在构造函数里开辟内存空间
for(int i = 0;i<n;i++)
{
cin >> a[i];//读 数组元素
}
}
~Array()
{
delete a[];
}
void show()
{
for(int i = 0;i<n;i++)
{
cou << a[i] << ' ';
}
}
};
int main()
{
Array a;//立刻自动调用构造函数,调用后构造函数自己弹出键盘输入,然后就可以直接输入数字
a.show();
return 0;
}
#include <iostream>
using namespace std;
class Array{
private:
int size;// 数组大小
int* arr; // 指针 → 指向动态开辟的数组
public:
// 1. 构造函数:动态 new 开辟数组(标准写法),有参构造函数
Array(int n)
{
size = n;
arr = new int[size];//动态开辟数组空间
cout << "构造函数调用,数组开辟成功" << endl;
}
//2.给数组赋值的方法
void setValue(int index,int value)
{
arr[index] = value;
}
// 3. 打印数组
void showArray() {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
// 4. 析构函数:自动释放 new 出来的数组
~Array()
{
delete[] arr;
cout << "析构函数调用,数组内存已释放" << endl;
}
};
int main()
{
int n;
cin >> n;
// 创建数组对象 → 自动调用【构造函数】,自动 new 数组
Array obj(n);
//输入数据
for(int i=0;i<n;i++)
{
int num = 0;
cin >> num;
obj.setValue(i,num);
}
// 输出数组
obj.showArray();
// main 结束 → 对象 obj 销毁 → 自动调用【析构函数】
return 0;
}
上述的无参构造和有参构造,哪种代码耦合性更小?--有参构造
耦合:代码和外部依赖绑死、难以拆分复用。
高耦合:类内部直接读写控制台输入,只能靠键盘输入数据,不能灵活给数组塞自定义数字。
低耦合:类只负责存储数据,输入输出交给 main 主函数,类和控制台完全解绑。
无参构造:类管输入 + 存储,绑死控制台 → 高耦合
有参构造:类只管存储,输入交给 main → 低耦合、标准工程写法
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)