吴威龙 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。其实和指针类似,但是不太一样,具体你还是自己查查

    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码