问题描述
- 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;
};
解决方案
这一部分应该是对对象类型数据的运算符进行重载。例如默认的1+2=3,但在对象类型运算中不可直接运算。所以需要运算符重载。关于&符号,表示的是引用。举个例子int a=10;int& b=a;即完成绑定。此时操作变量b就直接影响到变量a。其实和指针类似,但是不太一样,具体你还是自己查查
解决方案二:
&在c++中有两个含义一是地址符,而是引用,就是起小名,也就是说一个变量有两个变量名,一个改变两个都改变