吴威龙 2016-02-19 09:30 采纳率: 0%
浏览 1414
已结题

C++模板,我不太懂里面& 字符啥意思(能帮忙分析这段代码吗?)

下面是我在《软件技术基础》里面看到的一部分内容,其中我不明白的地方就是 & 字符所在的地方
比如:
Matrix& Matrix:: operator– (Matrix& x)

在此先谢谢大家帮忙解答了

8.2.2 矢量和矩阵的模板
由上述定义可知,矢量就是数的线性排列,序列就是它们最自然的表示方式。矩阵又可视为矢量的线性集合,所以可用序列的数组表示。下面就是矢量和矩阵的模板:
矢量模板:以下为定义矢量模板的头文件 vector.h 中的全部内容。
// vector.h (可从光盘的对应章节中下载)
template class Vector {
public:
Vector() { size = n; };
int Size() { return size; };
T& operator { return element[j]; };
Vector& operator +(Vector&);
Vector& operator – (Vector&);
private:
T element[n];
int size;
};
// 数学上,矢量相加就是对应元素相加
template
Vector& Vector:: operator+(Vector& v)
{
for (int i=0; i< size; i++)
element[i] = element[i] + v.element[i];
return *this;
};
// 数学上,矢量相减就是对应元素相减
template
Vector& Vector:: operator-(Vector& v)
{
for (int i=0; i < size; i++)
element[i] = element[i] – v.element[i];
return *this;
};
矩阵模板:以下为定义矩阵模板的头文件 matrix.h 中的内容
// matrix.h (可从光盘的对应章节中下载)

include "vector.h"

template class Matrix {
public:
Matrix() { size = m; };
Vector& operator { return column[i];};
Matrix& operator +(Matrix&);
Matrix& operator –(Matrix&);
int Row() { return column[0].Size ( ); };
int Size() { return size; }
protected:
// 将矩阵定义为列矢量的序列,
Vector column[m];
int size;
};
// 矩阵相加就是对应列矢量相加
template
Matrix& Matrix:: operator+(Matrix& x)
{
for (int i = 0; i < size; i++)
column[i] = column[i] + x.column[i];
return *this;
};
// 矩阵相减就是对应列矢量相减
template
Matrix& Matrix:: operator– (Matrix& x)
{
for (int i = 0; i < size; i++)
column[i] = column[i] - x.column[i];
return *this;
};

  • 写回答

2条回答 默认 最新

  • ???_Neal 2016-02-19 10:38
    关注

    这一部分应该是对对象类型数据的运算符进行重载。例如默认的1+2=3,但在对象类型运算中不可直接运算。所以需要运算符重载。关于&符号,表示的是引用。举个例子int a=10;int& b=a;即完成绑定。此时操作变量b就直接影响到变量a。其实和指针类似,但是不太一样,具体你还是自己查查

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题