C++模板类继承重载运算符问题

Selena53 2017-06-08 09:32:18
在重载赋值运算符时老是出错:Invalid allocation size~~
调试的时候发现引用值使用时就不是原值了


不知道哪里出错了T_T
本人小白~~求大神请教

刚用论坛不知道怎么加附件[捂脸]~~粘一个代码先
[code=c][/#ifndef NUMERICARRAY_CPP
#define NUMERICARRAY_CPP
#include "NumericArray.h"
#include "Array.h"

template <typename T>
NumericArray<T>::NumericArray():Array()
{
}
template <typename T>
NumericArray<T>::NumericArray(int newsize):Array(newsize)
{
}
template <typename T>
NumericArray<T>::NumericArray(const NumericArray<T>& arr):Array(arr)
{
}
template <typename T>
NumericArray<T>::~NumericArray()
{
}
template <typename T>
NumericArray<T>& NumericArray<T>::operator = (const NumericArray<T>& nuarr)// the assignment operator
{
if(this == &nuarr)//check if the source object is not the same as the this object
{
return *this;
}
Array::operator = (nuarr);
return *this;
}

template <typename T>
NumericArray<T>& NumericArray<T>::operator + (const NumericArray<T>& arr) const
{
NumericArray<T> result((*this).Size());
if ((*this).Size() == arr.Size())
{
for (int i=0;i<arr.Size();i++)
{
result.SetElement(i, (*this).GetElement(i)+ arr.GetElement(i));
}
}
else throw -1;
return result;
}
template <typename T>
NumericArray<T>& NumericArray<T>::operator * (const double factor) const
{
NumericArray<T> result((*this).Size());
int i;
for (i=0;i<(*this).Size();i++)
{
result.SetElement(i, (*this).GetElement(i) * factor);
}
return result;
}
template <typename T>
double NumericArray<T>::DotProduct(const NumericArray<T>& arr1)
{
double product=0;
if ((*this).Size() == arr1.Size())
{
int i;
for (i=0;i<arr1.Size();i++)
{
product += (*this).GetElement(i)*arr1.GetElement(i);
}
}
else throw -1;
return product;
}
#endifcode]
...全文
234 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
supergerm 2017-06-13
  • 打赏
  • 举报
回复
还有 main函数的文件呢。。。这不给全,都不知道你干了啥呀。
supergerm 2017-06-13
  • 打赏
  • 举报
回复
头文件呢。。。。
赵4老师 2017-06-09
  • 打赏
  • 举报
回复
《C++编程思想》
这是DS小龙哥编写整理的C++入门指南PDF文档,适合C++初学者,C语言转C++工程师当做入门工具书学习。PDF里有完整示例、知识讲解,平时开发都可以复制粘贴,非常便捷。 目前一共写了7章,后续会持续更新资源包,更新后重新下载即可。 这是目前书籍的目录: C++入门指南 1 一、 C++语言基本介绍与开发环境搭建 1 1.1 C++简介 1 1.2 面向对象编程 1 1.3 Windows系统下搭建C++学习环境 2 二、C++基础入门 16 2.1 C++类和对象 17 2.2 C++命名空间 18 2.3 std标准命名空间 20 2.4 C++新增的标准输入输出方法(cin和cout) 22 2.5 C++规定的变量定义位置 24 2.6 C++新增的布尔类型(bool) 24 2.7 C++ 新增的new和delete运算符 25 2.8 C++函数的默认参数(缺省参数) 26 2.9 C++函数重载详解 28 2.10 C++新增的引用语法 30 三、 C++面向对象:类和对象 34 3.1 类的定义和对象的创建 34 3.2 类的成员变量和成员函数 36 3.3 类成员的访问权限以及类的封装 38 3.4 C++类的构造函数与析构函数 39 3.5 对象数组 47 3.6 this指针 50 3.7 static静态成员变量 52 3.8 static静态成员函数 53 3.9 const成员变量和成员函数 55 3.10 const对象(常对象) 56 3.11 友元函数和友元类 58 3.11.3 友元类 61 3.12 C++字符串 62 四、C++面向对象:继承与派生 75 4.1 继承与派生概念介绍 75 4.2 继承的语法介绍 75 4.3 继承方式介绍(继承的权限) 76 4.4 继承时变量与函数名字遮蔽问题 79 4.5 基类和派生类的构造函数 82 4.6 基类和派生类的析构函数 83 4.7 多继承 85 4.8 虚继承和虚基类 88 五、C++多态与抽象类 91 5.1 多态概念介绍 91 5.2 虚函数 92 5.3 纯虚函数和抽象类 95 六、C++运算符重载 97 6.1 运算符重载语法介绍 97 6.2 可重载运算符与不可重载运算符 98 6.3 一元运算符重载 99 6.4 二元运算符重载 102 6.5 关系运算符重载 104 6.6 输入/输出运算符重载(>>、<<) 105 6.7 函数调用运算符 () 重载 106 6.8 重载[ ](下标运算符) 107 七、C++模板和泛型程序设计 108 7.1 函数模板 108 7.2 类模板 110

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧