C++模板类继承重载运算符问题
在重载赋值运算符时老是出错: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]
调试的时候发现引用值使用时就不是原值了


不知道哪里出错了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]
...全文
相关推荐
c++primer第五版第9章课后习题答案上
9.27.cpp可能涉及到运算符重载,这是C++的一个独特功能,允许我们自定义已有的运算符行为。题目可能要求重载某个运算符以适应特定类的需要。
C++ Certified Professional Programmer (61-120).pdf
C++的多态性和虚函数: - 问题1中的`operator int()`是一个常量成员函数,能够将B类对象转换为整型,这是通过重载类型转换运算符实现的,尽管这里的代码片段没有涉及继承和虚函数,但这一概念对理解多态性在
cpp代码-Project
【标题】cpp代码-Project本项目主要涵盖了C++编程语言的应用实践,旨在提供一个学习和理解C++编程基础及高级特性的实例。
CPP Training.zip
**函数**:定义、调用、参数传递、函数重载,以及C++中的函数模板,能实现通用编程。3. **类与对象**:面向对象编程的基础,包括类的定义、对象的创建、封装、继承和多态性。4.
免费_华为C++培训教程.doc
**多继承与菱形缺陷、this跳转** 多继承允许一个类继承多个基类,但可能导致菱形问题,即当一个派生类有多个基类,且这些基类有一个共同的基类时,可能出现二义性。解决菱形缺陷通常使用虚继承。


