一个c++程序题,double distanceTo(Point &p)const,这里为何形参p用引用呢??

#include<cmath>using namespace std;
class Point{ //坐标点类
public:
const double x,y;
Point(double x=0.0, double y=0.0): x(x),y(y){}
//**********found**********
double distanceTo(Point &p)const{ //到指定点的距离
return sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)) ;
}

第1个回答  2020-06-23
函数功能里只需要使用pt的成员,而不需要修改它们,这个时候加上const可以确保函数里面不能修改类成员,若是有修改的赋值语句,编译器会报错,你就可以发现非法编程应用;而其他人使用你的类成员函数的时候,也可以知道你是要保护传入的参数
第2个回答  2012-09-20
使用引用,可以避免重新使用复制构造函数生成新对象再传入函数啊,减少内存开销和运行时间追问

哦,这么说不用也可以了?
还是只要函数调用类的形参时一般都用引用?

追答

你可以不使用引用,但效率低了。如果你的类很复杂的,比如继承和组合了很多其它类,数据成员非常多,那么每次都生成新对象来传实参,会大幅度的影响运行效率。

一般情况下使用引用是利大于弊的,如果你能明确分析出不使用引用能得到你要求的功能,才不使用引用。

本回答被网友采纳

一个c++程序题,为何double distance(const Point &pt) const中形参要用...
函数功能里只需要使用pt的成员,而不需要修改它们,这个时候加上const可以确保函数里面不能修改类成员,若是有修改的赋值语句,编译器会报错,你就可以发现非法编程应用;而其他人使用你的类成员函数的时候,也可以知道你是要保护传入的参数

c++ 计算两点的距离 运用const引用
const 全称constant 意为永恒的不变的,不可更改 reference是c++新的特性,类似于传地址,对reference的操作实际上就是对被引用者的操作,编译器不会为这样的参数建立副本,而是传指针到函数 无论是const还是reference都是编译时期的策略,防止你更改了不该更改的值,减少了内存开销,在汇编层面你仍然可以...

...并定义成员函数doubleDistance(const& Point),求两点的距离。_百度...
class Point { public Point(){x = y = 0;} public Point(double x,double y){this.x = x;this.y = y;} public double Distance(const Point &p){return sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p*y));} public double x,y;};\/\/测试代码 include <iostream> include <math>...

c++编写一个点类Point,功能包括输出点的坐标,移动到新位置及输出它与...
Point(int X, int Y); \/\/带参数的构造函数 Point(const Point &p); \/\/拷贝构造函数;int getX(); \/\/获取横坐标 int getY(); \/\/获取纵坐标 void setX(int iX); \/\/设置横坐标 void setY(int iY); \/\/设置纵坐标 float distance(Point p1, Point p2); \/\/计算两点的距离protected:privat...

求一C++程序:计算点到直线的距离?
我的测试程序是用默认参数值初始化的 当然,你可以改为:Point P(2,3);Line L(1,2,3);其它的都不变 懂了么?include<iostream> include<cmath> using namespace std;class Line;\/\/声明类Line,因为Point类中声明友元函数friend dist(Point P,Line L)用到该类 class Point { private:double x;...

纳维语(c\/c++)
他发现纳维语和英语有些类似:纳维语单词刚好和英语相反。现在杰克需要借助他的电脑写一个程序,自动将句子中的单词反向输出,帮助他学习纳维语。输入数据输入数据的第一行是测试数据行数T(T<100)。接下来有T行英文语句,每行最多不超过256个字符。输出要求对应每行英文语句,输出反向单词的语句。 展开 ...

友元函数有什么作用,它主要用在哪些情况下?
友元函数的作用就是提供直接访问对象的私有成员的接口。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。使用情况:1)必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在private和public部分;...

求编程大佬,c++定义点Point类,内含实数类型成员x,y,编程实现对两个点...
friend Point SymmetryO(Point const &pt); \/\/ 返回关于原点对称的坐标 void Show(void);void Move(double dx, double dy); \/\/ 相对移动 void Moveto(double newx, double newy); \/\/ 绝对移动 ~Point() {} };double Distance(Point const &a, Point const &b) { return sqrt((a.x -...

VC++里printf();
n(代表一个正整数) 对实数,表示输出n位小数;对字符串,表示截取的字符个数 - 输出的数字或字符在域内向左靠[编辑本段]函数返回值: printf函数的一般形式为: int printf(const char *format,[argument]); 以上形式,我们在Visual C++里输入“printf(”将会看到。 说明printf函数类型为整型,其返回值是整型值。

2011数学建模国赛B题 求解答
一段时间后统计所有车走过的点数及每个点被走过的次数,用问题二给出的两个指标进行评价。综合两个指标,可判断此路径的好坏,重复这个过程,直到综合评价指标达到一个满意的值为止。问题四增加了隐蔽性要求,首先给出评价隐蔽性的指标,隐蔽性可用路线的随机性来评价,将它加入到问题三的模型中去进行求解。问题五限制警车...

相似回答