一段C++代码,把小弟我给难住了
一段C++代码,把我给难住了const Point3d & SetToMin (const Point3d & p2){if (p2.x[0] x[0]) x[0] p2
一段C++代码,把我给难住了
const Point3d & SetToMin (const Point3d & p2)
{
if (p2.x[0] < x[0]) x[0] = p2.x[0];
if (p2.x[1] < x[1]) x[1] = p2.x[1];
if (p2.x[2] < x[2]) x[2] = p2.x[2];
return *this;
}
如上面所示,Point3d是一个类名,SetToMin ()为一个函数,在类名与函数名之间有一个地址运算符,这是什么意思呢?还有,在函数的形参中也有一个& ,这个的作用又是什么,是在不懂,请高手指点。
[解决办法]
那叫引用
就是防止临时 拷贝构造的呃
[解决办法]
那不叫做引用,可以把引用看成变量的别名,作用是防止创建临时变量,进而减少数据构造函数及拷贝函数的调用
[解决办法]
Point3d&是函数的返回类型,表示返回的是Point3d类型的引用,函数里面的 const Point3d &p2 表示参数的类型是一个Point3d的引用。两个const,前面一个的意思是别修改我返回给你的东西,第二个的意思是我也不会修改你传给我的东西。
[解决办法]
去翻翻C++书上关于“引用”的章节就清楚鸟
[解决办法]
[解决办法]嗯,引用引用。
[解决办法]1、在类名与函数名之间有一个地址运算符,这是什么意思呢?
返回自己,可以继续执行只读操作,如:
Point3d p1,p2;
...
Point p = p1.SetToMin(p2).x[0];
2、还有,在函数的形参中也有一个& ,这个的作用又是什么?
传递参数时以引用方式,这样就可以减少复制成本
如果p2对象作为值参传入,至少需要拷贝其x[0]、x[1]、x[2]
[解决办法]如果LZ能理解
SomeClass* Function();
同时知道C++中的引用这个东西
相信应该也能理解
SomeClass& Function();
[解决办法]引用的规则:
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(
2
)不能有
NULL
引用,引用必须与合法的存储单元关联(指针则可以是
NULL
)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象),这里指不能再绑定其他的对象,只要不是const,就可以改变值,即可以通过引用改变绑定对象的值,因为它们其实是相同的。
[解决办法]这就是引用,多看看书