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

问题描述

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++中有两个含义一是地址符,而是引用,就是起小名,也就是说一个变量有两个变量名,一个改变两个都改变

时间: 2024-09-19 16:11:10

c++-C++模板,我不太懂里面&amp;amp; 字符啥意思(能帮忙分析这段代码吗?)的相关文章

有谁懂tcpClient邮件发送的? 帮我看一下这段代码

问题描述 protectedvoidPage_Load(objectsender,EventArgse){try{TcpClienttcpClient=newTcpClient("smtp.mail.yahoo.cn",25);Response.Write("HELOlocalhost:"+OperateStream(tcpClient,"HELOlocalhost")+"<br>");Response.Write

javascript中的正则表达式看不太懂,求解释

问题描述 javascript中的正则表达式看不太懂,求解释 <script type="text/javascript"> /* 赋值合同行下标 */ var electronicContractRowIdx = 0, /* 获取合同模板 */ electronicContractTpl = $("#electronicContractTpl") .html().replace(/(//<!--)|(//-->)/g,""

visual studio 2010怎么用keil c51编译?(网上的教程不太懂,初学者)

问题描述 visual studio 2010怎么用keil c51编译?(网上的教程不太懂,初学者) 我看了一些网上的教程,但是有的不懂,所以很久都没有成功.望指点!十分感谢! 解决方案 keil c51有一个workbench,外观和VC++一样,直接就可以用.

camera-eeprom的dts文件节点信息。一些信息看不太懂。

问题描述 eeprom的dts文件节点信息.一些信息看不太懂. 里面的每个block为什么会分成pagepageenpollmem四个部分?每个部分分别指的是什么?求指教. 解决方案 对应厂商硬件的关系,实际意义并不是特别重要.只要和硬件的信息储存对应就可以了

本地连接-笔记本关于网络适配器的问题,一直不太懂

问题描述 笔记本关于网络适配器的问题,一直不太懂 我记得这里是有个本地连接的啊,怎么我这里没有了呢,而且其他的这些都是做什么的,都有什么用途和作用呢,求计算机高手帮忙解答 解决方案 以太网:本地连接 WLAN:无线网卡 宽带连接:一种连接协议 VM开头的:这是虚拟的网卡,一般是安装虚拟机产生的. 解决方案二: 本地连接需要一个路由器 解决方案三: 那就是以太网吧,你要设置什么

sql server-一个不太懂.GraphView的人来问一个关于用.GraphView做完表格后坐标名称被挡住了的问题

问题描述 一个不太懂.GraphView的人来问一个关于用.GraphView做完表格后坐标名称被挡住了的问题 现在在做从sybase到sqlserver移行的工作 其中有一个部分是通过给出的数据做一个曲线图出来部分代码如下 Set objGraph = Server.CreateObject(""NplotWrapper.LogGraph"") . . . Response.BinaryWrite objGraph.GraphView(intQueryImgWid

数据库设计-有哪位大神帮我看下这个类图有啥错不?不太懂这个,毕业图需要画,哪位大神帮帮忙

问题描述 有哪位大神帮我看下这个类图有啥错不?不太懂这个,毕业图需要画,哪位大神帮帮忙 解决方案 这个根本不是类图,而是实体关系图(E-R图),建议你问问老师到底要什么图 解决方案二: 数据库表的设计图吗?还是?

avl-一道编程题,不太懂,求教

问题描述 一道编程题,不太懂,求教 AVL树是指左右子树的高度差不超过1,现在有一颗n个节点的 AVL树,问这样的树有多少种,比如n=10,有60种. 解决方案 dp[n][h]表示n个节点高度为h的AVL树的个数. dp[n][h] = dp[m1][h - 1] * dp[m2][h - 1] + 2 * dp[m3][h] * dp[m4][h - 1] 其中 m1 + m2 = n m3 + m4 = n 其中h是logn级别的,所以总的时间复杂度大概是O(n ^ 2 logn). 解决

javascript-一道js的题,(小白刚接触js很多不太懂。)

问题描述 一道js的题,(小白刚接触js很多不太懂.) function a(x){ var b=3; return function(y){ return x+y+(++b); } } var ac = a(10); var b = ac(10); var c = ac(10); 求 b c的值? 求高手详解. 解决方案 结果24 25 x没有值 b是闭包变量,所以第一次的累加会被保留. 解决方案二: JS的一道题 解决方案三: 结果分别是:24.25