c++,编程 为什么不能用Point p替换? Point&p与Point p区别在哪呢?我发现二
c++,编程为什么不能用Pointp替换?Point&p与Pointp区别在哪呢?我发现二级中有些题目同样在形参列表中用的Pointp而不是Point&p。求大神详细解答...
c++,编程
为什么不能用Point p替换?
Point&p与Point p区别在哪呢?我发现二级中有些题目同样在形参列表中用的Point p而不是Point&p。求大神详细解答,谢! 展开
为什么不能用Point p替换?
Point&p与Point p区别在哪呢?我发现二级中有些题目同样在形参列表中用的Point p而不是Point&p。求大神详细解答,谢! 展开
1个回答
展开全部
其实关键是在Point前面有个const!如果没有const,那么用Point&和Point都应该是可以的。因为有了const,const Point p这样的声明,p就是不能被改变的对象“常量”,而调用这个函数时要为p拷贝一个对象实参值进来,这不自相矛盾吗?所以只好用const Point& p。这时的p是一个所谓引用,即一个对象的别名,实际就是调用函数时的实参自身,矛盾就被化解了。另,用const Point& p效率也高,不用在函数中为p开辟临时空间,也不用把一个对象内容一项一项地拷贝到这个临时空间中来……完全个人理解,希望对你有帮助!
追问
谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询