上面这是一个函数,const 在这里起什么用,有必要用它吗? int StrC::PI(const CPoint point){ }上面这是一个函数,const 在这里起什么用,有必要用它吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有用。防止你一不小心修改了point 这个参数值。。 这样用没什么意义,也没有必要,只不过就是在函数体中不能修改point要是const CPoint*或const CPoint&就合适了 如困在函数里没必要修改CPoint的值,就把它定义成const,这样程序编译会进行优化,加快函数的调用. 觉得上面的CONST是多余的如果是CONST POINT &PT还有用 同意blackblue(跌跌撞撞),这样的确没意义;这样的函数声明表示;该函数被调用时,会收到传入参数的一个副本,而该副本是以常量的形式存在的,在函数执行过程中该副本不允许被修改;如果出现附值语句,会产生编译错误。我说得很详细吧^_^ 这样才有意义int StrC::PI(const CPoint& point); 我是想说在这里加const 和不加 const 是不是完全一样呢?函数里怎么会改变point的值呢? 我认为对这个函数的调用者是没有任何意义的,但对这个函数本身是为了在函数内部防止误修改point的值,相当于函数体的一个局部常量。 >>我是想说在这里加const 和不加 const 是不是完全一样呢?函数里怎么会改变point的值呢?不一样你加了以后,就不能改变point的值了,也就是说不能把他当临时变量用了,而程序外的point是不会变的,这是一样的,若不加,由于程序拷贝了一个point在栈中,这个拷贝的point是可以被改变的,加了就不能改变了加了没什么意义只有常引用才是有意义的,为了避免参数被改变其实前面诸位已说得很清楚了 D3D渲染场景的时候,大家是如何设置光源的? Button的单击事件中能够传递list ctrl表的参数吗? _beginthreadex 获取线程函数返回值 ie加载项与注册表的关系 使用OnCtlColor字体为什么没有变颜色 动态创建的CEdit控件为何不支持ctrl C (急,高手给指点下)关于变换工具栏(以及菜单)的问题?? 如何删除非模态对话框的指针? Windows用[控制面板]文件C:|WINNT\System32\desk.cpl工作时出现错误(NT4.0版本) 软件版本名称中的"Build"是什么意思, 如何等待另一个文件操作的完成? 怎么样得到某字段允许或不允许为空?
这样程序编译会进行优化,加快函数的调用.
如果是CONST POINT &PT还有用
这样的函数声明表示;该函数被调用时,会收到传入参数的一个副本,而该副本是以常量的形式存在的,在函数执行过程中该副本不允许被修改;如果出现附值语句,会产生编译错误。我说得很详细吧^_^
int StrC::PI(const CPoint& point);
但对这个函数本身是为了在函数内部防止误修改point的值,
相当于函数体的一个局部常量。
不一样
你加了以后,就不能改变point的值了,也就是说不能把他当临时变量用了,而程序外的point是不会变的,这是一样的,若不加,由于程序拷贝了一个point在栈中,这个拷贝的point是可以被改变的,加了就不能改变了
加了没什么意义
只有常引用才是有意义的,为了避免参数被改变
其实前面诸位已说得很清楚了