-
-
大神好,我是刚学C++语言,在编程时出了错误,希望大神帮忙解释下
-
发表于:
2014-5-14 23:05
8569
-
大神好,我是刚学C++语言,在编程时出了错误,希望大神帮忙解释下
题目是:编程序创建一个类模板,可以对不同的数据类型的数组分别进行初始化、添加数据、求和、求平均值、显示数组等功能。
这是我的源代码:
#include<iostream>
using namespace std;
template <typename T>
class Array
{
public:
T *a = new T[size];
T b = 0;
Array(int s)
{if (s > 1)
size = s;
else size = 1;
}
void Set()
{
for (int i = 0; i < size; i++)
{
cin >> a[i];
}
}
void Plus()
{
for (int i = 0; i<size; i++)
{
b = b + *(a + i);
}
cout << b << endl;
}
void Average()
{
cout <<( b / size )<< endl;
}
protected:
int size;
};
int main()
{
cout << "请输入整型数列" << endl;
Array<int>IntArray(3);
IntArray.Set();
IntArray.Plus();
IntArray.Average();
cout << "请输入双精度数列" << endl;
Array<double>DoubleArray(3);
DoubleArray.Set();
DoubleArray.Plus();
DoubleArray.Average();
}
编程环境是VS2013,windows8,在调试程序时,有时可以顺利进行,但是时不时在第一行输入三个整数数列时,空格结束后就弹出一个错误。错误是0x774CF996 (ntdll.dll) (实验4.2.exe 中)处有未经处理的异常: 0xC0000374: 堆已损坏。 (参数: 0x774ED338)。请大神帮忙看下小弟的源代码中是否有哪里疏漏不够严谨,导致程序会出错。这个错误很不稳定,有时没事,有时就出错。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课