codecamp

C++ const参数

你也许注意到了,函数after和addTime的参数都是传递引用。这俩函数是纯函数,不修改接受的参数值,因此我也可以传值。

传值的好处是调用函数和被调用函数都进行了适当的封装--其中一方的修改不可能影响另一方,除非影响了返回值。

另一方面,传引用由于避免了参数的复制,往往更高效。除此之外,C++有一个优秀的特性叫做const,它能使引用参数和值参数一样安全。

If you are writing a function and you do not intend to modify a parameter, you can declare that it is aconstant reference parameter. The syntax looks like this: 如果你要编写一个函数,并不打算修改其参数,你就可以声明一个常量引用参数。语法如下:

void printTime (const Time& time) ...
Time addTime (const Time& t1, const Time& t2) ...

上面代码只包含了函数的首行。如果你告诉编译器你不打算修改参数,这种语法可以起到提醒作用。如果你试图改变参数,编译器会报错,至少会告警。

C++ 纯函数
C++ 修改函数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }