C++不建议使用内置数组,提供了功能强大的array和vector。因为内置数组有诸多不便:没有下标越界检查,对两个数组而言不能用==,!=,=等运算符,不能把一个数组赋值给另一个数组等等。而array和vector又有些复杂,自带几十个函数,容易让人看花了眼。为什么我们不自己实现一个精简的数组对象呢?
让我们我们模仿array,创建一个自己的int数组"MyArray"对象。先看看测试和运行效果。
//main()
#include <iostream>
#include "MyArray.h"
using namespace std;
int main()
{
MyArray integers1(3);
MyArray integers2;
cout << integers1;
cout << "类MyArray的对象integers1 长度为"
<< integers1.getSize()
<< "\n初始化后各项值为:\n" << integers1;
cout << "\n类MyArray的对象integers2 长度为"
<< integers2.getSize()
<< "\n初始化后各项值为:\n" << integers2;
cout << "\n\n输入8个数字,用串行cin分别赋值给integers1,integers2两个对象" << endl;
cin >> integers1 >> integers2;
cout << "\n输入后,两对象每个值为:\n"
<< "integers1:\n" << integers1
<< "\nintegers2:\n" << integers2;
cout << "\n\n使用重载的!=(integers1 != integers2)" << endl;
if (integers1 != integers2)
cout << "integers1 != integers2\n" << endl;
MyArray integers3(integers1);
cout << "用拷贝构造函数创建对象integers3\n"
<< "integers3长度为"
<< integers3.getSize()
<< "\n初始化后各个值为\n" << integers3;
cout << "\n\n使用重载的=(integers1 = integers2)" << endl;
integers1 = integers2;
cout << "integers1:\n" << integers1
<< "\nintegers2:\n" << integers2;
cout << "\n\n使用重载的==(integers1 == integers2)" << endl;
if (integers1 == integers2)
cout << "integers1 == integers2" << endl;
cout << "\nintegers1[1] is " <<